zoj 3317

来源:互联网 发布:安全动画预防网络诈骗 编辑:程序博客网 时间:2024/06/11 14:35


注意输入的数据可能是乱序的,自己要按 check in 的顺序进行排序~

#include<stdio.h>#include<stdlib.h>struct renter{int in;int leave;int num;int room;}r[100];int cmp1(const  void *a,const void *b){return (*(struct renter *)a).in> (*(struct renter *)b).in ? 1 : -1;}int cmp2(const  void *a,const void *b){return (*(struct renter *)a).num > (*(struct renter *)b).num ? 1 : -1;}int main(){int m,n,i,j,room[100];while(scanf("%d%d",&n,&m),!(n==0&&m==0)){for(i=0;i<n;i++){scanf("%d%d",&r[i].in,&r[i].leave);  //读入每个人的入住时间和离开的时间r[i].num=i;   //记录数据输入时顺序,输出时还要按这个顺序r[i].room=0;}qsort(r,n,sizeof(r[0]),cmp1);          //按check in 排序for(i=0;i<m;i++)room[i]=0; //初始化for(i=0;i<n;i++){for(j=0;j<m;j++){if(room[j]<=r[i].in)   //room[] 中记录的是入住旅客离开的时间{r[i].room=j+1;  //记录该旅客住的房间号room[j]=r[i].leave; //更新 room[i] 的值break;}}}        qsort(r,n,sizeof(r[0]),cmp2);for(i=0;i<n;i++)printf("%d\n",r[i].room);}return 0;}/*这题过得真不容易,题意没理解透,给出的的数据可能是乱序的,需要自己按renter的check in 顺序排序后,分配房间;另外一点,sort还是不会用啊!!!!!!!*/






原创粉丝点击