#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
struct client{
double arrive_time;
double deal_time;
bool operator<(const client &b) const{
return arrive_time<b.arrive_time;
}
};
int main(){
freopen("C:\\Users\\Frank Wang\\Desktop\\in.txt","r",stdin);
const int N=10001;
int n,k;
double q[N];
client a[N];
cin>>n>>k;
for(int i=0;i<n;i++){
int hh,mm,ss;
//char c1,c2;
scanf("%d:%d:%d%lf",&hh,&mm,&ss,&a[i].deal_time);
//cin>>hh>>c1>>mm>>c2>>ss>>a[i].deal_time;
a[i].arrive_time=hh*60.0+(double)mm+ss/60.0;
}
sort(a,a+n);
// for(int i=0;i<n;i++){
// cout<<a[i].arrive_time<<' '<<a[i].deal_time<<endl;
// }
for(int i=0;i<k;i++){
q[i]=480.0;
}
double sum=0;
bool flag;
int j;
int nw=0;
for(int i=0;i<n;i++){
if(a[i].arrive_time>1020.0) break;
++nw;
flag=1;
if(a[i].arrive_time<480.0){
sum+=480.0-a[i].arrive_time;
a[i].arrive_time=480.0;
}
double min=10200;
for(int ii=0;ii<k;ii++){
if(q[ii]<=a[i].arrive_time){
q[ii]=a[i].arrive_time+a[i].deal_time;
flag=0;
break;
}
if(min>q[ii]) {min=q[ii];j=ii;}
}
if(flag){
sum+=q[j]-a[i].arrive_time;
q[j]+=a[i].deal_time;
}
}
// cout<<sum<<endl;
// cout<<nw<<endl;
// cout<<sum/nw<<endl;
printf("%.1lf\n",sum/nw);
}
pat 1017
最新推荐文章于 2025-01-22 23:38:46 发布