#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Problem {
    int id;
    int time;
    int happiness;
};

bool compare(Problem p1, Problem p2) {
    if (p1.happiness == p2.happiness) {
        return p1.id < p2.id;
    }
    return p1.happiness > p2.happiness;
}

int main() {
    int n;
    cin >> n;
    
    vector<Problem> problems(n);
    for (int i = 0; i < n; i++) {
        problems[i].id = i + 1;
        cin >> problems[i].time >> problems[i].happiness;
    }
    
    sort(problems.begin(), problems.end(), compare);
    
    cout << problems[0].id << endl;
    
    return 0;
}
``
【题目描述】时间不多啦所以小明只能做一道题。小明知道每道题需要花费的时间和完成后的快乐度。他希望做单位时间内取得快乐度最多的那一道题。如果有快乐度相同的他希望做题号较小的那一道。【输入】第一行一个数n为题目个数。1≤n≤106接下来n行每一行两个数ab为耗费的时间和快乐度都不大于109。【输出】一个数小明选择的题目题号。【输入样例】23 54 8【输出样例】2用c++做

原文地址: https://www.cveoy.top/t/topic/ibCY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录