pat1014

来源:互联网 发布:厦门大学网络教育报名 编辑:程序博客网 时间:2024/06/04 19:27
#include<cstdio>#include<queue>#include<string>using namespace std;const int maxn=20,maxm=1000+5;queue<int> que[maxn];int tout[maxm],tin[maxm];string convert(int id){    if(tin[id]>=60*(17-8)) return "Sorry";    else {        int time=tout[id];        string str;        char ss[5];        if(time/60+8<10) str+="0";        sprintf(ss,"%d",time/60+8);        str=str+ss+":";        time-=time/60*60;        if(time<10) str+="0";        sprintf(ss,"%d",time);        str+=ss;        return str;    }}int main(){    int N,M,K,Q;    while(scanf("%d%d%d%d",&N,&M,&K,&Q)==4){        int time,fast,id;        for(int i=0;i<N;i++){            while(!que[i].empty()) que[i].pop();            if(i<K) {                    scanf("%d",&time);                    que[i].push(time);                    tout[i]=que[i].back();            }        }        for(int i=N;i<N*M;i++){            if(i<K){                scanf("%d",&time);                tin[i]=que[i%N].back();                que[i%N].push(time+tin[i]);                tout[i]=que[i%N].back();            }        }        for(int i=N*M;i<K;i++){            fast=que[0].front();            for(int j=1;j<N;j++)                fast=min(fast,que[j].front());            for(int j=0;j<N;j++){                if(que[j].front()==fast){                    que[j].pop();                    scanf("%d",&time);                    tin[i]=que[j].back();                    que[j].push(tin[i]+time);                    tout[i]=que[j].back();                    break;                }            }        }        for(int i=0;i<Q;i++){            scanf("%d",&id);            printf("%s\n",convert(id-1).c_str());        }    }    return 0;}