超时代码:
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
const int maxn = 100100;
struct person {
string name;
int age, worth;
}per[maxn];
bool cmp(person &a, person &b) {
if (a.worth != b.worth)
return (a.worth > b.worth);
else if (a.age != b.age)
return (a.age < b.age);
else if (a.name != b.name)
return (a.name < b.name);
}
int main() {
int n, k;
scanf("%d%d",&n,&k);
for (int i = 0; i < n; i++) {
cin >> per[i].name ;
scanf("%d%d",&per[i].age,&per[i].worth);
}
vector<person> vec;
for (int i = 1; i <= k; i++) {
int m, amin, amax;
scanf("%d%d%d",&m,&amin,&amax);
int cnt = 0;
for (int j = 0; j < n; j++) {
if (per[j].age >= amin && per[j].age <= amax) {
vec.push_back(per[j]);
cnt++;
}
}
sort(vec.begin(), vec.end(), cmp);
printf("Case #%d\n", i);
int len=vec.size();
if (len == 0) {
printf("None\n");
}
else if (len <= m) {
for (int i = 0; i < len; i++) {
cout << vec[i].name ;
printf(" %d %d\n",vec[i].age,vec[i].worth);
}
}
else {
for (int i = 0; i < m; i++) {
cout << vec[i].name ;
printf(" %d %d\n",vec[i].age,vec[i].worth);
}
}
vec.clear();
}
return 0;
}