甲级PAT1014
程序员文章站
2022-06-07 14:30:05
...
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxk=1005;
struct node
{
int x,y;
}f[maxk];
int t[maxk];
queue<int> p[maxk];
int n,m,k,q;
int main()
{
scanf("%d%d%d%d",&n,&m,&k,&q);
int x;
memset(t,0,sizeof(t));
for(int i=1;i<=k;i++)
{
scanf("%d",&x);
int minx=1;
for(int j=1;j<=n;j++)
if(i<=n*m)
{
if(p[j].size()<p[minx].size())minx=j;
}
else if(p[j].front()<p[minx].front())minx=j;
t[minx]+=x;
p[minx].push(t[minx]);
if(i>n*m)p[minx].pop();
if(t[minx]-x<540)
{
f[i].x=8+t[minx]/60;
f[i].y=t[minx]%60;
}
else
{
f[i].x=18;f[i].y=0;
}
}
while(q--)
{
scanf("%d",&x);
if(f[x].x<18)printf("%02d:%02d\n",f[x].x,f[x].y);
else printf("Sorry\n");
}
return 0;
}