题目详情 - 1055 The World's Richest (25 分) (pintia.cn)
测试点:
测试点2超时。没有分组,直接从result数组中寻找符合的富翁。
代码:
#include<bits/stdc++.h>
using namespace std;
struct Node {
string name;
int age, money;
};
bool cmp(Node a, Node b) {
return a.money != b.money ? a.money > b.money : (a.age != b.age ? a.age < b.age : a.name < b.name);
}
int main()
{
int N = 0, K = 0, M = 0;
cin >> N >> K;
vector<Node> v(N), result;
for (int i = 0; i < N; ++i) { cin >> v[i].name >> v[i].age >> v[i].money; }
sort(v.begin(), v.end(), cmp);
vector<int> book(202, 0);
for (int i = 0; i < N; ++i) {
if (book[v[i].age] < 100) {
result.push_back(v[i]);
book[v[i].age]++;
}
}
for (int i = 0; i < K; ++i) {
cout << "Case #" << i + 1 << ":" << endl;
int mi, ma, cnt = 0;
cin >> M >> mi >> ma;
for (int j = 0; j < result.size() && cnt<M; ++j) {
if (result[j].age <= ma && result[j].age >= mi) {
cout << result[j].name << ' ' << result[j].age << ' ' << result[j].money << endl;
cnt++;
}
}
if (cnt==0) { cout << "None" << endl; }
}
return 0;
}