无题
Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 980Accepted Submission(s): 424
Problem Description
就要复试了
外地的考生都要在学校附近住宾馆了
假设在学校附近有C家宾馆
并且这些宾馆只有单人房
而每家宾馆的价格不一样
学生们都想找价格便宜的住
所以现在需要你的帮助
当有学生需要住宾馆的时候
告诉他哪个宾馆还有空的房间并且价格最便宜
而且有一个要求
同一个组的学生要住在同一个宾馆
Input
输入包括多组数据
输入首先包括一个整数T(T <= 50)
代表有T组数据
每组数据首先是一个整数C(C <= 100),代表宾馆的个数
接下来是C行数据
每行3个整数
第一个代表宾馆的编号(<=1000)
第二个是宾馆的房间数(<=50)
第三个是宾馆的价格(<=1000)
然后是一个整数T (T <= 1000)
代表想找宾馆住的小组
接下来的T行每行代表一个要找宾馆的小组
每个小组不超过10人
Output
对于每组数据中的想找宾馆的小组
输出他们应该找的宾馆编号
如果没有合适的宾馆或已经住满
输出”sorry”.
Sample Input
1
2
1 2 100
2 3 120
4
3
1
1
5
Sample Output
2
1
1
sorry
我的代码
#include<stdio.h>
void swap(int &x,int &y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int t,a[1001][3],c,i,j,num,leap,k,total;
scanf(\"%d\",&t);
while(t--)
{
scanf(\"%d\",&c);
for(i=0;i<c;i++)
scanf(\"%d%d%d\",&a[0],&a[1],&a[2]);
for(i=0;i<c;i++)
for(j=i+1;j<c;j++)
if(a[2]>a[j][2])
{
swap(a[0],a[j][0]);
swap(a[1],a[j][1]);
swap(a[2],a[2]);
}
else if(a[2]==a[j][2]&&a[j][1]<a[1])
{
swap(a[0],a[j][0]);
swap(a[1],a[j][1]);
swap(a[2],a[2]);
}
scanf(\"%d\",&num);
for(j=0;j<num;j++)
{
scanf(\"%d\",&total);
leap=0;
for(k=0;k<c;k++)
if(total<=a[k][1])
{
leap=1;
a[k][1]-=total;
printf(\"%d\\n\",a[k][0]);
break;
}
if(leap==0)
printf(\"sorry\\n\");
}
}
return 0;
} |