PAT A 1095. Cars on Campus (30)
来源:互联网 发布:星际争霸2战役兵种数据 编辑:程序博客网 时间:2024/05/29 13:34
总有一个超时的。
#include <string>#include <cstdio>#include <iostream>#include <map>#include <vector>#include <algorithm>#include <set>using namespace std;struct inandout{string intime,outtime,parktime;void compute(){string shh(intime,0,2),smm(intime,3,2),sss(intime,6,2);string thh(outtime,0,2),tmm(outtime,3,2),tss(outtime,6,2);int s=stoi(shh)*60*60+stoi(smm)*60+stoi(sss),t=stoi(thh)*60*60+stoi(tmm)*60+stoi(tss);int lag=t-s,tt[3];for(int i=0;i<3;++i){tt[i]=lag%60;lag/=60;}char tmpt[8];sprintf(tmpt,"%02d:%02d:%02d",tt[2],tt[1],tt[0]);parktime.assign(tmpt,tmpt+9);}void in(string &a){intime=a;}void out(string &b){outtime=b;}};struct record{string plate,time,move;bool flag=true;record()=default;record(const string &a,const string &b,const string &c){plate=a,time=b,move=c;}};bool cmp_time(const record &a,const record &b){if(a.time!=b.time)return a.time>b.time;return a.plate<b.plate;}bool cmp_plate(const record &a,const record &b){if(a.plate!=b.plate)return a.plate<b.plate;return a.time<b.time;}vector<record> rec;map<string,string> cars;vector<string> result;set<string> check,parkingcars;void addup(string &intime,const string &outtime){string shh(intime,0,2),smm(intime,3,2),sss(intime,6,2);string thh(outtime,0,2),tmm(outtime,3,2),tss(outtime,6,2);int s=stoi(shh)*60*60+stoi(smm)*60+stoi(sss),t=stoi(thh)*60*60+stoi(tmm)*60+stoi(tss);int lag=t+s,tt[3];for(int i=0;i<3;++i){tt[i]=lag%60;lag/=60;}char tmpt[9];sprintf(tmpt,"%02d:%02d:%02d",tt[2],tt[1],tt[0]);intime.assign(tmpt,tmpt+9);}int main(void){//freopen("in.log","r",stdin);int n,k;string maxtime="00:00:00";scanf("%d%d",&n,&k);while(n--){char p[8],ti[9],mo[4];scanf("%s%s%s",p,ti,mo);string a(p),b(ti),c(mo);record tmpr(a,b,c);rec.push_back(tmpr);}sort(rec.begin(),rec.end(),cmp_plate);for(int i=0;i<rec.size();){if(i+1<rec.size()){if(rec[i].plate==rec[i+1].plate&&rec[i].move=="in"&&rec[i+1].move=="out"){inandout tmp;tmp.in(rec[i].time),tmp.out(rec[i+1].time); tmp.compute();if(!cars.count(rec[i].plate)){cars[rec[i].plate]=tmp.parktime;}else addup(cars[rec[i].plate],tmp.parktime);if(cars[rec[i].plate]>maxtime){result.clear();maxtime=cars[rec[i].plate];result.push_back(rec[i].plate);}else if(cars[rec[i].plate]==maxtime) result.push_back(rec[i].plate);i+=2;}else rec.erase(rec.begin()+i);}else rec.erase(rec.begin()+i);}sort(rec.begin(),rec.end(),cmp_time); int carnum=0,i=rec.size()-1;while(k--){string now;cin>>now;while(i>=0&&rec[i].time<=now){if(rec[i].move=="in"){++carnum;}else if(rec[i].move=="out"){--carnum;}--i;}cout<<carnum<<endl;}sort(result.begin(),result.end());for(string c:result)cout<<c<<" ";cout<<maxtime<<endl;return 0;}
阅读全文
0 0
- PAT A 1095. Cars on Campus (30)
- pat-A 1095. Cars on Campus (30)
- PAT-A-1095. Cars on Campus (30)
- PAT A 1095. Cars on Campus (30)
- Pat(A) 1095. Cars on Campus (30)
- PAT 1095. Cars on Campus (30)
- PAT 1095. Cars on Campus (30)
- 【PAT】1095. Cars on Campus (30)
- PAT 1095. Cars on Campus (30)
- 1095. Cars on Campus (30) PAT 甲级
- PAT 1095. Cars on Campus (30)
- PAT 1095. Cars on Campus (30)
- PAT 1095. Cars on Campus (30)
- PAT 甲级 1095. Cars on Campus (30)
- PAT 1095. Cars on Campus
- 【PAT】1095. Cars on Campus
- PAT Cars on Campus (30)
- [转]PAT甲级练习1095. Cars on Campus (30)
- js复习笔记day7
- HDU
- 数据包络分析法(DEA)在数学建模中的应用
- canvas标签的用法
- 排列和组合简单的递归思路以及C++实现
- PAT A 1095. Cars on Campus (30)
- vue 绑定单值和双向绑定
- Linux中使用gzip来压缩/解压 *.gz文件
- [第八季]1.Java Web开发概述开发环境及一个简单案例(一)
- win7激活那点事:
- 希尔排序算法
- Hive高级聚合之GROUPING SETS/ROLLUP/CUBE
- Memcached学习总结
- mysql提示密码不符合要求:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements