DS||銀行排隊

題目描述
我們大多都有在銀行排隊的經歷,唉,那坑爹的排隊啊!現在就讓我們來算算我們這些客戶平均需要等多久吧。
每天剛開始時銀行會開m個窗口來爲我們total個客戶辦理業務,當有客戶需要辦理業務時,先選擇可以辦理業務的窗口,如果有多個窗口可以辦理業務就選擇空閒時間最長的窗口,如果有多個窗口空閒的時間一樣長,則選擇序號小的窗口辦理業務。假設我們每個人來到的時間和辦理業務所需要的時間(爲了簡化問題,採用整數表示時間)都知道了。現在請你算算我們平均需要等待多久呢?

輸入
有多組測試數據,每組數據開始有兩個正整數m(<20)和total(<200),後面有total對整數,對應客戶先後到來的時間以及辦理業務所需的時間。
輸出
平均等待的時間,保留兩位小數。
樣例輸入 Copy
2 6 1 3 4 1 5 3 9 2 13 4 13 3
3 14 0 3 2 2 2 4 5 4 7 2 11 3 12 3 12 4 12 1 13 3 15 4 19 1 22 3 23 2
2 5 0 6 0 5 0 6 7 1 7 2
樣例輸出 Copy
0.00
0.29
1.20

#include"stdio.h"
#include"string.h"
int s[999999];
int main()
{
	int a,b,i,j,n,loc;
	float m,t,time;
	while(scanf("%f %d",&m,&n)!=EOF)
	{
		memset(s,0,sizeof(s));
		t=0;
		a=0;
		b=0;
		for(i=0;i<n;i++)
		{
			scanf("%d %d",&a,&b);
			time=a-s[0];
			loc=0;	
			for(j=1;j<m;j++)
			{
				if(a-s[j]>time)
				{
					time=a-s[j];
					loc=j;
				}
			}
			if(time>=0)
			{
				s[loc]=a+b;
			}
			else if(time<0)
			{
				s[loc]=a+b-time;
				t=t+(-1)*time;
			}
		} 
		printf("%.2f\n",t/n);
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章