代码如下:
#include <iostream>
#include <stdio.h>
#include <queue>
#define seventeen 1020
#define eight 480
#define INF 0x3f3f3f3f
using namespace std;
struct customer{
int cost_time;
int s_time;
int f_time;
}cus[1005];
struct window{
int f_time;
queue<int> q;
window(){
f_time=eight;
}
}win[20];
int main(){
int n,m,k,q;
cin>>n>>m>>k>>q;
for(int i=1;i<=k;i++){
cin>>cus[i].cost_time;
}
for(int i=1,j=0;i<=n*m&&i<=k;i++){
cus[i].s_time=win[j].f_time;
cus[i].f_time=win[j].f_time+cus[i].cost_time;
win[j].f_time+=cus[i].cost_time;
win[j].q.push(i);
j=(j+1)%n;
}
for(int i=n*m+1;i<=k;i++){
int min_time=INF;
int top;
int pos;
for(int j=0;j<n;j++){
top=win[j].q.front();
if(cus[top].f_time<min_time){
min_time=cus[top].f_time;
pos=j;
}
}
cus[i].s_time=win[pos].f_time;
cus[i].f_time=win[pos].f_time+cus[i].cost_time;
win[pos].f_time+=cus[i].cost_time;
win[pos].q.push(i);
win[pos].q.pop();
}
int hour,minute,num;
for(int i=0;i<q;i++){
cin>>num;
if(cus[num].s_time>=seventeen){
cout<<"Sorry";
if(i!=q-1){
cout<<endl;
}
}else{
hour=(cus[num].f_time)/60;
minute=(cus[num].f_time)%60;
printf("%02d",hour);
cout<<':';
printf("%02d",minute);
if(i!=q-1){
cout<<endl;
}
}
}
return 0;
}