1095. Cars on Campus (30)

来源:互联网 发布:淘宝领卷app 编辑:程序博客网 时间:2024/05/18 01:56
有一个case超时
#include<cstdio>#include<iostream>#include<string>#include<map>#include<vector>#include<algorithm>using namespace std;map <string , int > c2id;map <int , string > id2c;struct node{ int time,in_out,id;node(int a,int b,int c):time(a),in_out(b),id(c){}};struct park{int stime,etime;park(int _s,int _e):stime(_s),etime(_e){}};int tran(string time){int x=0;x+=(time[0]-'0')*60*60*10;x+=(time[1]-'0')*60*60;x+=(time[3]-'0')*60*10;x+=(time[4]-'0')*60;x+=(time[6]-'0')*10;x+=(time[7]-'0');return x;}bool cmp(node a,node b){if(a.id!=b.id)return a.id<b.id;else if(a.time!=b.time)return a.time<b.time;return a.in_out<b.in_out;}int main(){int n,m,time,id;string sid,stime,op;cin>>n>>m;vector <node> record;int ans=0;for(int i=0;i<n;i++){cin>>sid>>stime>>op;    if(c2id[sid]==0)      c2id[sid]=++ans,id2c[ans]=sid;id=c2id[sid];time=tran(stime);    if(op=="in")    record.push_back(node(time,0,id));    else     record.push_back(node(time,1,id));} sort(record.begin(),record.end(),cmp);vector <park> res;vector <string > maxtimecar;vector <int > parktime(ans+1);int maxtime=0;for(int i=0;i<record.size()-1;i++){if(record[i].in_out==0&&record[i+1].id==record[i].id){            if(record[i+1].in_out==0)continue;else {parktime[record[i].id]+=record[i+1].time-record[i].time;if(parktime[record[i].id]>maxtime){maxtime=parktime[record[i].id];maxtimecar.clear();maxtimecar.push_back(id2c[record[i].id]);}else if(parktime[record[i].id]==maxtime)maxtimecar.push_back(id2c[record[i].id]);res.push_back(park(record[i].time,record[i+1].time));} }}string rstime;int rtime;for(int i=0;i<m;i++){cin>>rstime;rtime=tran(rstime);int tmp=0;for(int j=0;j<res.size();j++){if(rtime>=res[j].stime&&rtime<res[j].etime)tmp++;}cout<<tmp<<endl;}sort(maxtimecar.begin(),maxtimecar.end());for(int i=0;i<maxtimecar.size();i++)cout<<maxtimecar[i]<<' ';printf("%02d:%02d:%02d\n",maxtime/3600,(maxtime%3600)/60,maxtime%60);return 0;} 

                                             
1 0
原创粉丝点击