1.本题当队伍不满的时候是按序号进,不是找最快的队伍进。
2.≥17:00才开始服务的人Sorry
3.队列的pop是第一个数即front。
数据结构:
struct 方便输出
queue q;二维的int队列,模拟。
ac:
#include
using namespace std;
int n,m,k,q1;
struct node{
int end;
int cost;
}v[1005];
int main(){
cin>>n>>m>>k>>q1;
for(int i=1;i<=k;i++){
cin>>v[i].cost;
}
queue<int> q[n];
int cur_t=480;
int win=0;
for(int i=1;i<=k;i++){
if(i<=n*m){ //总队伍不满的做法
int en=0;
if(q[win].size()==0) //队伍不满的做法
en=(v[i].cost+cur_t);
else
en=(v[i].cost+q[win].back());
q[win].push(en);
v[i].end=en;
win=(win+1)%n;
}
else{
int cur_last=999999,index=0;
for(int j=0;j<n;j++){
if(q[j].front()<cur_last){
cur_last=q[j].front();
index=j;
}
}
q[index].pop();
int en=q[index].back()+v[i].cost;
v[i].end=en;
q[index].push(en);
}
}
for(int i=0;i<q1;i++){
int res=0;
cin>>res;
if(v[res].end-v[res].cost>=1020){
cout<<"Sorry"<<endl;
}
else{
printf("%02d:%02d\n",v[res].end/60,v[res].end%60);
}
}
return 0;
}