原题:1055. The World's Richest (25)
解题思路:
按题目要求排个序,再按要求找到合适数量的人就可以了
代码如下:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
const int maxn = 100000 +5;
struct Bill
{
int age, val;
string name;
} bill[maxn];
bool cmp(Bill a, Bill b)
{
if(a.val != b.val) return a.val > b.val;
else if(a.age != b.age) return a.age < b.age;
else return a.name < b.name;
}
int main()
{
int n, q;
while(scanf("%d%d", &n, &q) == 2)
{
for(int i = 0; i < n; i++)
{
cin >> bill[i].name;
scanf("%d%d", &bill[i].age, &bill[i].val);
}
sort(bill, bill + n, cmp);
for(int i = 1; i <= q; i++)
{
printf("Case #%d:\n", i);
int cnt, l, r;
scanf("%d%d%d", &cnt, &l, &r);
int c = cnt;
for(int j = 0; j < n && c; j++)
{
if(bill[j].age >= l && bill[j].age <= r)
{
printf("%s %d %d\n", bill[j].name.c_str(), bill[j].age, bill[j].val);
c--;
}
}
if(c == cnt) printf("None\n");
}
}
return 0;
}