Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * author: MySakure
- * created: 21.02.2020 19:44:35
- **/
- #include<bits/stdc++.h>
- using namespace std;
- #define all(a) a.begin(),a.end()
- const int maxn=1e5+10;
- struct bus{
- string name,time;
- int res=0,t;
- }a[maxn];
- int k,n;
- int check(string time){
- int ans=0;
- ans+=((time[0]-'0')*10+time[1]-'0')*60*60;
- ans+=((time[3]-'0')*10+time[4]-'0')*60;
- ans+=((time[6]-'0')*10+time[7]-'0');
- return ans;
- }
- bool cmp(const bus&a,const bus&b){
- return a.t<b.t;
- }
- void print(int res){
- int t=res/60/60;
- if(t<=9)cout<<"0"<<t<<":";
- else cout<<t<<":";
- t=res/60%60;
- if(t<=9)cout<<"0"<<t<<":";
- else cout<<t<<":";
- t=res%60;
- if(t<=9)cout<<"0"<<t<<endl;
- else cout<<t<<endl;
- }
- struct query{
- int id;
- string time;
- int t;
- }q[maxn];
- bool cmp2(const query&a,const query&b){
- return a.t<b.t;
- }
- int ans[maxn];
- map<string,int>mp;
- int pos=0;
- vector<int>v[maxn];
- bool cmp3(int lhs,int rhs){
- return a[lhs].t<a[rhs].t;
- }
- struct p{
- string name;
- int t;
- }Ans[maxn];
- int idans;
- bool cmp4(const p&a,const p&b){
- return a.t>b.t;
- }
- signed main() {
- ios::sync_with_stdio(false);
- cin.tie(NULL);
- cin>>n>>k;
- for(int i=1;i<=n;++i){
- cin>>a[i].name>>a[i].time;
- string tmp;
- cin>>tmp;
- if(tmp=="in")a[i].res=1;
- else a[i].res=-1;
- a[i].t=check(a[i].time);
- if(!mp.count(a[i].name))mp[a[i].name]=++pos;
- v[mp[a[i].name]].push_back(i);
- }
- for(int i=1;i<=pos;++i){
- sort(v[i].begin(),v[i].end(),cmp3);
- for(int j=0;j<int(v[i].size());++j){
- if(a[v[i][j]].res==1&&j<(int(v[i].size())-1)&&a[v[i][j+1]].res==-1){
- if(Ans[idans].name==a[v[i][j]].name)
- Ans[idans].t+=a[v[i][j+1]].t-a[v[i][j]].t;
- else
- Ans[++idans]=p{a[v[i][j]].name,a[v[i][j+1]].t-a[v[i][j]].t};
- ++j;
- }
- else a[v[i][j]].res=0;
- }
- }
- sort(a+1,a+1+n,cmp);
- for(int i=1;i<=k;++i){
- cin>>q[i].time;
- q[i].t=check(q[i].time);
- q[i].id=i;
- }
- sort(q+1,q+1+k,cmp2);
- int id=1,cnt=0;
- for(int i=1;i<=k;++i){
- while(id<=n&&a[id].t<=q[i].t){
- cnt+=a[id].res;
- ++id;
- }
- ans[q[i].id]=cnt;
- }
- for(int i=1;i<=k;++i)
- cout<<ans[i]<<endl;
- sort(Ans+1,Ans+1+idans,cmp4);
- if(idans==0){
- return 0;
- }
- int tmp=1;
- while(tmp+1<=idans&&Ans[tmp+1].t==Ans[tmp].t){
- ++tmp;
- }
- for(int i=1;i<=tmp;++i){
- cout<<Ans[i].name<<" ";
- }
- print(Ans[1].t);
- return 0;
- }
- /*
- JH007BD 18:00:01 in
- JH007BD 05:09:59 in
- JH007BD 05:10:33 in
- JH007BD 12:23:42 out
- JH007BD 12:24:23 out
- JH007BD 18:07:01 out
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement