题目:http://acm.hdu.edu.cn/showproblem.php?pid=1871
代码:
#include<stdio.h> #include<stdlib.h> struct hotel{//宾馆信息数据结构; int id;//宾馆编号; int num;//宾馆房间数; int price;//宾馆价格; }h[101]; int cmp(const void *a,const void *b){//比较函数; return (*(hotel *)a).price-(*(hotel *)b).price; } int main(){ int T;//数据的组数; while(scanf("%d",&T)!=EOF){ while(T--){ int C;//宾馆的个数; scanf("%d",&C); int i,j; int G;//想找宾馆的小组数; int pers[1001];//小组人数信息; int res[1001];//记录满足小组条件的宾馆编号; for(i=0;i<C;i++){ scanf("%d %d %d",&h[i].id,&h[i].num,&h[i].price); } scanf("%d",&G); for(i=0;i<G;i++){ scanf("%d",&pers[i]); } qsort(h,C,sizeof(h[0]),cmp);//宾馆信息按价格升序排列; for(i=0;i<G;i++){//每个小组; for(j=0;j<C;j++){//每个宾馆; if(h[j].num>=pers[i]){ break; } } if(j<C){ res[i]=h[j].id; h[j].num-=pers[i]; } else res[i]=0; } for(i=0;i<G;i++){ if(res[i]>0)printf("%d/n",res[i]); else printf("sorry/n"); } } } //system("pause"); }
posted on 2011-02-25 22:00 江南烟雨hust 阅读(158) 评论(0) 收藏 举报