PAT (Advanced Level) 1095. Cars on Campus (30)
2016-07-04 21:57
363 查看
模拟题。仔细一些即可。
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<map> #include<queue> #include<cstring> #include<stack> #include<vector> #include<iostream> using namespace std; int n,m; struct Info { string id; int time,f; int quary; }tmp[200000+10],s[200000+10]; string ans[200000+10]; struct SJ { string id; int time; }sj[200000+10]; bool cmp(const Info&a,const Info&b) { if(a.id==b.id) return a.time<b.time; return a.id<b.id; } bool cmp2(const Info&a,const Info&b) { if(a.time==b.time) return a.quary<b.quary; return a.time<b.time; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { cin>>tmp[i].id; int hh,mm,ss; scanf("%d:%d:%d",&hh,&mm,&ss); tmp[i].time=hh*60*60+mm*60+ss; char op[5]; scanf("%s",op); if(op[0]=='i') tmp[i].f=1; else tmp[i].f=0; tmp[i].quary=0; } sort(tmp+1,tmp+1+n,cmp); int sz=0,p=1; while(1) { if(p>n) break; if(tmp[p].f==1) { if(tmp[p+1].f==0&&tmp[p+1].id==tmp[p].id) { s[sz++]=tmp[p]; s[sz++]=tmp[p+1]; p=p+2; } else p++; } else p++; } int r=0; sj[r].id=s[0].id; sj[r].time=s[1].time-s[0].time; for(int i=2;i<sz;i=i+2) { if(s[i].id==s[i-1].id) { sj[r].time=sj[r].time+s[i+1].time-s[i].time; } else { r++; sj[r].id=s[i].id; sj[r].time=s[i+1].time-s[i].time; } } r++; int Max=0,u=0; for(int i=0;i<r;i++) Max=max(Max,sj[i].time); for(int i=0;i<r;i++) if(sj[i].time==Max) ans[u++]=sj[i].id; sort(ans,ans+u); for(int i=0;i<m;i++) { int hh,mm,ss; scanf("%d:%d:%d",&hh,&mm,&ss); s[sz].quary=1; s[sz++].time=hh*60*60+mm*60+ss; } sort(s,s+sz,cmp2); int num=0; for(int i=0;i<sz;i++) { if(s[i].quary==1) { printf("%d\n",num); } else { if(s[i].f==1) num++; else num--; } } sort(ans,ans+u); for(int i=0;i<u;i++) { cout<<ans[i]; printf(" "); } int hh,mm,ss; hh=Max/3600; Max=Max-hh*3600; mm=Max/60; Max=Max-mm*60; ss=Max; printf("%02d:%02d:%02d\n",hh,mm,ss); return 0; }
相关文章推荐
- jQuery的document ready与 onload事件——你真的思考过吗?
- 一个新的开始,用博客记录自己的成长
- ThreadLock 线程锁、同步一段代码
- 【递归与递推】计数器
- Figures in articles
- 锤子便签的 monkeyrunner 测试脚本(转)
- monkeyrunner对比屏幕局部图像.getSubImage()
- 红包
- 【bzoj2502】【清理雪道】【最小流】
- python操作linux关机、重启和修改ip地址
- Java Classloader机制解析
- 【Android开发—电商系列】(二):仿淘宝商品属性标签页
- 【递归】产生数
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
- casdg
- 如何给Ghost博客添加多说评论
- TreeMap与红黑树
- 垃圾收集基础
- HDU 1241Oil Deposits (DFS)
- 初来报道,自我介绍!求老司机带路,助我入门!