Simulation questions. A little more careful.
#include <cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<map>#include<queue>#include<cstring>#include<stack>#include<vector>#include<iostream>using namespacestd;intn,m;structinfo{stringID; inttime,f; intQuary;} tmp[200000+Ten],s[200000+Ten];stringans[200000+Ten];structsj{stringID; intTime ;} sj[200000+Ten];BOOLcmpConstInfo&a,Constinfo&b) { if(a.id==b.id)returna.time<B.time; returna.id<b.id;}BOOLCMP2 (ConstInfo&a,Constinfo&b) { if(A.time==b.time)returna.quary<b.quary; returna.time<B.time;}intMain () {scanf ("%d%d",&n,&m); for(intI=1; i<=n;i++) {cin>>tmp[i].id; intHH,MM,SS; scanf"%d:%d:%d",&hh,&mm,&SS); Tmp[i].time=hh* -* -+mm* -+SS; Charop[5]; scanf"%s", op); if(op[0]=='I') tmp[i].f=1; Elsetmp[i].f=0; Tmp[i].quary=0; } sort (tmp+1, tmp+1+n,cmp); intsz=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; } Elsep++; } Elsep++; } intR=0; Sj[r].id=s[0].id; Sj[r].time=s[1].time-s[0].time; for(intI=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++; intmax=0, u=0; for(intI=0; i<r;i++) max=Max (max,sj[i].time); for(intI=0; i<r;i++) if(sj[i].time==Max) Ans[u++]=sj[i].id; Sort (Ans,ans+T); for(intI=0; i<m;i++) { intHH,MM,SS; scanf"%d:%d:%d",&hh,&mm,&SS); S[sz].quary=1; S[sz++].time=hh* -* -+mm* -+SS; } sort (S,s+SZ,CMP2); intnum=0; for(intI=0; i<sz;i++) { if(s[i].quary==1) {printf ("%d\n", num); } Else { if(s[i].f==1) num++; Elsenum--; }} sort (Ans,ans+T); for(intI=0; i<u;i++) {cout<<Ans[i]; printf (" "); } intHh,mm,ss; HH=max/3600; max=max-hh*3600; MM=max/ -; max=max-mm* -; SS=Max; printf ("%02d:%02d:%02d\n", HH,MM,SS); return 0;}
PAT (Advanced level) 1095. Cars on Campus (+)