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); }
相关文章推荐
- Windows学习心得【静态类】
- Unity3D:标签跟随功能
- Jquery和ajax开发案例之---动态股票信息
- 解決EXP-00091
- 标准C++中的string类的用法总结
- Linux图形界面中客户端、服务器、窗口管理器之间的关系
- 解析android中隐藏与显示软键盘及不自动弹出键盘的实现方法
- LVS-DR模型:LVS持久连接:使用ipvsadm实现其配置步骤
- Spring中的工厂模式和单例模式
- 浅谈linux字符设备注册
- 程序个人如何成长
- oracle存储过程和游标的使用
- 关于集合set ---STL
- Operations
- Cocos2dx mac下使用versions下报错“linker command failed with exit code 1”
- python中的@修饰符
- 多次使用一个苹果证书——导出p12文件
- ./src/redis-cli --raw 查看存储了utf8的键值
- .Net FrameWork String.PadLeft() 、String.PadRight()、String.Substring()方法
- 16.线索二叉树 (中序) 及 线索二叉树的中序遍历