Simple simulation questions.
#include <iostream>#include<cstring>#include<cmath>#include<algorithm>#include<cstdio>#include<map>#include<queue>using namespacestd;structx{intSt; intLen; inten;} p[ the];queue<int>q[ -];intn,m,k,s;BOOLCheck () { for(intI=1; i<=n;i++) if(! Q[i].empty ())return 1; return 0;}intMain () {scanf ("%d%d%d%d",&n,&m,&k,&s); for(intI=1; i<=k;i++) scanf ("%d",&P[i].len); intPOS; for(pos=1;p os<=min (k,n);p os++) {p[pos].st=480; Q[pos].push (POS); } for(;p os<=min (n*m,k);p os++) { intid=pos%n;if(id==0) id=N; Q[id].push (POS); } while(1) { if(check () = =0) Break; intmin=999999; for(intI=1; i<=n;i++) { if(Q[i].empty ())Continue; intId=Q[i].front (); Min=min (min,p[id].st+P[id].len); } for(intI=1; i<=n;i++) { if(Q[i].empty ())Continue; intId=Q[i].front (); if(p[id].st+p[id].len==Min) {P[id].en=p[id].st+P[id].len; Q[i].pop (); if(pos<=k) Q[i].push (pos++); if(! Q[i].empty ()) P[q[i].front ()].st=P[id].en; } } } for(intI=1; i<=s;i++) { intId scanf"%d",&ID); if(p[id].st/ ->= -) printf ("sorry\n"); Elseprintf"%02d:%02d\n", p[id].en/ -, p[id].en% -); } return 0;}
PAT (Advanced level) 1014. Waiting in line (30)