#include<stdio.h>
struct{
int head, tail;
int data[1001]; //其實(shí)使用循環(huán)隊(duì)列模仿更加省空間
int time; //這是每次出隊(duì)的時(shí)候計(jì)算出隊(duì)的人的時(shí)間的局装,初始為0表示8點(diǎn)
}queue[20], wait;
int startTime[1001];
int completionTime[1001];
int main()
{
int N, M, K, Q;
scanf("%d %d %d %d", &N, &M, &K, &Q);
int i = 0;
for(i = 0; i < K; i++){
int time = 0;
scanf("%d", &time);
if(i < N * M){ //先初始化柜臺(tái)隊(duì)列
int q = i % N;
queue[q].data[queue[q].tail++] = time;
startTime[i+1] = queue[q].time;
queue[q].time += time;
completionTime[i+1] = queue[q].time;//這里只是單純填裝隊(duì)伍,至于能不能被服務(wù)就是另一件事情了
}//等于說(shuō)填裝隊(duì)伍的時(shí)候已經(jīng)計(jì)算了出隊(duì)時(shí)間,注意題意指明入隊(duì)后不可以換隊(duì)伍
else{
wait.data[wait.tail++] = time;//初始化等待隊(duì)列
}
}
for(i = 1; i < 540; i++){//計(jì)算等待隊(duì)列顧客的完成時(shí)間凸郑,注意每名顧客的開始接待時(shí)間也很重要
//每分鐘掃描一次所有隊(duì)列裳食,將其頭位置的時(shí)間減1,并檢查是否等于零
//如果有隊(duì)頭時(shí)間減一后等于零則wait隊(duì)列出一個(gè)人進(jìn)入該隊(duì)列
//注意入隊(duì)的人必定要出隊(duì)無(wú)論截止時(shí)間是多少芙沥,所以入隊(duì)時(shí)間要控制
if(wait.tail - wait.head > 0){
int j = 0;
for(j = 0; j < N; j++){//所有隊(duì)列隊(duì)頭time減一
queue[j].data[queue[j].head]--;
if(queue[j].data[queue[j].head] == 0){
queue[j].head++;
queue[j].data[queue[j].tail++] = wait.data[wait.head++];
startTime[N*M+wait.head] = queue[j].time;
queue[j].time += wait.data[wait.head-1];
completionTime[N*M+wait.head] = queue[j].time;
}
}
}
else break;
}
if(wait.tail - wait.head > 0){//540分鐘后表示隊(duì)伍有剩余诲祸,全部賦值550表示不能服務(wù)
//這個(gè)坑也是看了https://blog.csdn.net/Joyceyang_999/article/details/82020758?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
//博客才知道,之前忘了而昨。
int num = N * M + wait.head + 1;
for(i = 0; i < wait.tail - wait.head; i++){
startTime[num + i] = 550;
}
}
for(i = 0; i < Q; i++){
int num = 0;
scanf("%d", &num);
if(startTime[num] < 540){
int h = completionTime[num]/60 + 8;
int m = completionTime[num]%60;
printf("%02d:%02d\n",h ,m);
}
else printf("Sorry\n");
}
return 0;
}
里面的那個(gè)博客寫的比較好救氯,可以參考。