pta 1014 Waiting in Line (30 分)

1.本题当队伍不满的时候是按序号进,不是找最快的队伍进。
2.≥17:00才开始服务的人Sorry
3.队列的pop是第一个数即front。
数据结构:
struct 方便输出
queue q;二维的int队列,模拟。

ac:

#include
using namespace std;
int n,m,k,q1;
struct node{
	int end;
	int cost;
}v[1005];
int main(){
	cin>>n>>m>>k>>q1;
	for(int i=1;i<=k;i++){
		cin>>v[i].cost;
	}
	queue<int> q[n];
	int cur_t=480;
	int win=0;
	for(int i=1;i<=k;i++){
		if(i<=n*m){					//总队伍不满的做法 
			int en=0;
			if(q[win].size()==0)			//队伍不满的做法 
				en=(v[i].cost+cur_t);
			else
				en=(v[i].cost+q[win].back());
			q[win].push(en);
			v[i].end=en;
			win=(win+1)%n;
		}
		else{
			int cur_last=999999,index=0;
			for(int j=0;j<n;j++){
				if(q[j].front()<cur_last){
					cur_last=q[j].front();
					index=j;
				}
			}
				q[index].pop();
				int en=q[index].back()+v[i].cost;
				v[i].end=en;	
				q[index].push(en);
			}
	}
	for(int i=0;i<q1;i++){
		int res=0;
		cin>>res;
		if(v[res].end-v[res].cost>=1020){
			cout<<"Sorry"<<endl;
		}
		else{
			printf("%02d:%02d\n",v[res].end/60,v[res].end%60);
		}
	}
	
	return 0;
}

你可能感兴趣的:(笔记,数据结构,c++,链表)