PAT 1014 Waiting in Line

来源:互联网 发布:matlab智能算法 温正 编辑:程序博客网 时间:2024/05/21 12:46

1014. Waiting in Line (30)

模拟题,用队列做比较简单


#include<cstdio>#include<queue>using namespace std;#define sb line[l].front()const int N=1002,bt=8*60,et=17*60;int t[N],n,m,k,q,p,ans[N];queue<int> line[22]; void solve(){for(int j=0;j<m;j++)for(int i=1;i<=n;i++)line[i].push(j*n+i);int turn=n*m+1;for(int time=bt+1;time<et;time++)for(int l=1;l<=n;l++)if(--t[sb]==0){//服务完ans[sb]=time;line[l].pop();line[l].push(turn++);}for(int l=1;l<=n;l++)if(!line[l].empty())//只服务第一个ans[sb]=et-1+t[sb];}int main(){scanf("%d %d %d %d",&n,&m,&k,&q);for(int i=1;i<=k;i++)scanf("%d",&t[i]);solve();while(q--){scanf("%d",&p);if(ans[p])printf("%02d:%02d\n",ans[p]/60,ans[p]%60);elseprintf("Sorry\n");}return 0;}


0 0