1014. Waiting in Line (30)
#include <iostream>
#include <queue>using namespace std;int main()
{int n, m, k, q;scanf("%d%d%d%d", &n, &m, &k, &q);int processing[1010], i, res[1010];for(i = 1; i <= k; i++){scanf("%d", &processing[i]);res[i] = -1;}int former[30], flag[30];for(i = 1; i <= n; i++){former[i] = 8 * 60;flag[i] = 1;}queue<int> que[30];int window = 1;for(i = 1; i <= k && i <= n * m; i++){que[window++].push(i);if(window > n){window = 1;}}int mintime, minindex, j, size, cur, curtime;while(1){mintime = 10000000;minindex = -1;for(j = 1; j <= n; j++){size = que[j].size();if(size > 0 && flag[j] == 1){cur = que[j].front();curtime = former[j] + processing[cur];if(curtime < mintime){mintime = curtime;minindex = j;}}}if(minindex == -1){break;}cur = que[minindex].front();que[minindex].pop();former[minindex] = res[cur] = mintime;if(mintime >= 17 * 60){flag[minindex] = 0;}else if(i <= k){que[minindex].push(i++);}}int time, hour, minute;for(i = 1; i <= q; i++){scanf("%d", &cur);time = res[cur];if(time == -1){printf("Sorry\n");}else{hour = time / 60;minute = time % 60;printf("%02d:%02d\n", hour, minute);}}system("pause");return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/974032.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!