include<stdio.h>
#include<vector>
#include<queue>
#define inf 0x7fffffff
using namespace std;
struct node {
int poptime=0;
int endtime=0;
queue<int>p;
};
int main() {
int n, m, k, q, i, j,index=1,min,bh,w;
scanf("%d%d%d%d", &n, &m, &k, &q);
vector<int>time(k+1), result(k+1);
vector<bool>sorry(k + 1, false);
time.push_back(0);//ռλ
vector<node>window(n + 1);
for (i = 1; i <=k; i++)
scanf("%d",&time[i]);
for (i = 1; i <= m; i++) {
for (j = 1; j <= n; j++) {
if (index <= k) {
window[j].p.push(time[index]);
if (window[j].endtime >= 540)
sorry[index] = true;
window[j].endtime += time[index];
if (i == 1)
window[j].poptime = time[index];
result[index] = window[j].endtime;
index++;
}
}
}
while (index <= k) {
min = inf;
for (i = 1; i <= n; i++) {
if (min > window[i].poptime) {
min = window[i].poptime;
bh = i;
}
}
window[bh].p.pop();
window[bh].p.push(time[index]);
if (window[bh].endtime >= 540)
sorry[index] = true;
window[bh].endtime += time[index];
window[bh].poptime += window[bh].p.front();
result[index] = window[bh].endtime;
index++;
}
for (i = 1; i <= q; i++) {
int people;
scanf("%d",&people);
if (sorry[people])
printf("Sorry");
else
printf("%02d:%02d", 8 + result[people] / 60, result[people] % 60);
if (i != q)
printf("\n");
}
return 0;
}
1014 Waiting in Line
最新推荐文章于 2024-09-09 22:12:12 发布