題目描述
我們大多都有在銀行排隊的經歷,唉,那坑爹的排隊啊!現在就讓我們來算算我們這些客戶平均需要等多久吧。
每天剛開始時銀行會開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);
}
}