#include<iostream>
#include<cstdio>
using namespace std;
int n,t[1005],p[1005],cost[1005],k,ans0,ans[1005],mx1,mx2;
struct Windows{
int num,ed;
}w[1005];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>t[i]>>p[i];
p[i]=min(p[i],60);
}
cin>>k;
for(int i=1;i<=n;i++)
{
int ed=1e9,num;
for(int j=1;j<=k;j++)
{
if(w[j].ed<ed&&ed>t[i])
{
ed=w[j].ed;
num=j;
}
}
cost[i]=max(0,ed-t[i]);
w[num].ed=t[i]+cost[i]+p[i];
ans[num]++;
}
for(int i=1;i<=n;i++)
{
ans0+=cost[i];
mx1=max(mx1,cost[i]);
}
for(int i=1;i<=k;i++)
mx2=max(mx2,w[i].ed);
printf("%.1lf %d %d\n",(double)ans0/n,mx1,mx2);
cout<<ans[1];
for(int i=2;i<=k;i++)
cout<<' '<<ans[i];
return 0;
}
7-4 银行排队问题之单队列多窗口服务
最新推荐文章于 2024-07-14 01:31:01 发布