【PAT甲级】1014 Waiting in Line (30 分)(队列维护)

题面:

输入四个正整数N,M,K,Q(N<=20,M<=10,K,Q<=1000),N为银行窗口数量,M为黄线内最大人数,K为需要服务的人数,Q为查询次数。输入K个正整数,分别代表每位顾客需要被服务的时间,Q次查询每次查询一位顾客被服务完离开银行的时间。如果他在五点以前(不包括五点)没有开始被服务,输出“Sorry”。

trick:

在五点以前(不包括五点)没有开始被服务,输出“Sorry”,而不是被服务完时间在五点以后(以题面为准)。

AAAAAccepted code:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a[1007];
 4 queue<pair<int,int> >qu[27];
 5 int ans[1007];
 6 int quy[1007];
 7 int sum[27];
 8 int main(){
 9     int n,m,k,q;
10     cin>>n>>m>>k>>q;
11     for(int i=1;i<=k;++i)
12         cin>>a[i];
13     for(int i=1;i<=q;++i)
14         cin>>quy[i];
15     for(int i=1;i<=m;++i)
16         for(int j=1;j<=n;++j)
17             if((i-1)*n+j<=k)
18                 qu[j].push({a[(i-1)*n+j],(i-1)*n+j});
19     int flag=m*n+1;
20     while(1){
21         int mn=1e9;
22         for(int i=1;i<=n;++i)
23             if(!qu[i].empty()&&qu[i].front().first+sum[i]<mn)
24                 mn=qu[i].front().first+sum[i];
25         if(mn==1e9)
26             break;
27         for(int i=1;i<=n;++i)
28             if(!qu[i].empty()&&qu[i].front().first+sum[i]==mn){
29                 if(sum[i]>=540)
30                     ans[qu[i].front().second]=-1;
31                 else{
32                     sum[i]=mn;
33                     ans[qu[i].front().second]=sum[i];
34                 }
35                 qu[i].pop();
36                 if(flag<=k){
37                     qu[i].push({a[flag],flag});
38                     flag++;
39                 }
40             }
41     }
42     for(int i=1;i<=q;++i){
43         int hour=ans[quy[i]]/60+8;
44         int minute=ans[quy[i]]%60;
45         if(ans[quy[i]]==-1)
46             cout<<"Sorry";
47         else{
48             if(hour<10)
49                 cout<<"0"<<hour<<":";
50             else
51                 cout<<hour<<":";
52             if(minute<10)
53                 cout<<"0"<<minute;
54             else
55                 cout<<minute;
56         }
57         cout<<"\n";
58     }
59     return 0;
60 }

 

 

 

posted @ 2019-07-26 14:56  sewage  阅读(208)  评论(0编辑  收藏  举报