小明做题 C++ 代码实现

【题目描述】
时间不多啦,所以小明只能做一道题。
小明知道每道题需要花费的时间和完成后的快乐度。他希望做单位时间内取得快乐度最多的那一道题。如果有快乐度相同的,他希望做题号较小的那一道。

【输入】
第一行一个数n,为题目个数。(1≤n≤106)
接下来n行每一行两个数a,b,为耗费的时间和快乐度,都不大于109。

【输出】
一个数,小明选择的题目题号。

【输入样例】
2
3 5
4 8
【输出样例】
2

#include <iostream>
#include <iomanip>
#include <limits>

int main() {
    // 读入题目数量
    int n;
    std::cin >> n;

    int bestIndex = -1;
    double bestHappinessPerTime = -std::numeric_limits<double>::max();
    
    for (int i = 1; i <= n; ++i) {
        long long time, happiness;
        std::cin >> time >> happiness;
        
        // 计算单位时间内的快乐度
        double happinessPerTime = static_cast<double>(happiness) / time;

        // 选择最大快乐度,若相同选择题号较小
        if (happinessPerTime > bestHappinessPerTime) {
            bestHappinessPerTime = happinessPerTime;
            bestIndex = i;
        }
    }

    // 输出选择的题目题号
    std::cout << bestIndex << std::endl;

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值