题目:http://acm.hdu.edu.cn/showproblem.php?pid=1871
水题。。排序处理即可
下面是AC代码:
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
struct ss
{
int num;
int ren;
int money;
}s[1001];
int c;
int cmp(const void *a,const void *b)
{
struct ss *c=(ss *)a;
struct ss *d=(ss *)b;
if(c->money-d->money)return c->money-d->money;
return d->ren-c->ren;
}
int find(int x)
{
int i;
for(i=0;i<c;i++)
{
if(s[i].ren>=x)
{
s[i].ren-=x;
return s[i].num;
}
}
return 0;
}
int main()
{
int t,n,i,x,ans;
scanf("%d",&t);
while(t--&&scanf("%d",&c))
{
for(i=0;i<c;i++)
{
scanf("%d %d %d",&s[i].num,&s[i].ren,&s[i].money);
}
qsort(s,c,sizeof(s[0]),cmp);
scanf("%d",&n);
while(n--&&scanf("%d",&x))
{
ans=find(x);
if(ans)
{
printf("%d\n",ans);
}
else
printf("sorry\n");
}
}
return 0;
}