您的位置:首页 > 其它

pat 1017

2014-04-19 16:53 162 查看
#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
;
client a
;
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: