Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef struct node{
- int t_num;
- int tt;
- char p_name;
- char time[100];
- char yn[100];
- }Node;
- Node sub[5005];
- bool compare(Node a, Node b){
- return a.tt<b.tt;
- }
- int main()
- {
- int t,p,s;
- while(cin>>t>>p>>s){
- if(t==0&&p==0&&s==0)
- return 0;
- for(int i=0;i<s;i++){
- scanf("%d %c %s %[^\n]s",&sub[i].t_num,&sub[i].p_name,sub[i].time,sub[i].yn);
- //gets(sub[i].yn);
- //getline(cin,sub[i].yn);
- }
- for(int i=0;i<s;i++){
- int h,m,s;
- h=(sub[i].time[0]-'0')*10+(sub[i].time[1]-'0');
- m=(sub[i].time[3]-'0')*10+(sub[i].time[4]-'0');
- s=(sub[i].time[6]-'0')*10+(sub[i].time[7]-'0');
- //cout<<h<<' '<<m<<' '<<s<<endl;
- int total=(h*3600)+(m*60)+s;
- //cout<<total<<endl;
- sub[i].tt=total;
- }
- sort(sub,sub+s,compare);
- //cout<<endl;
- //for(int i=0;i<s;i++)
- // cout<<sub[i].t_num<<' '<<sub[i].p_name<<' '<<sub[i].time<<' '<<sub[i].yn<<endl;
- int mx;
- if(t>p)
- mx=t;
- else
- mx=p;
- int sidx=-1, eidx=-1;
- for(int i=0;i<s;i++){
- int prob=0,team=0,cnt=0;
- map<char,int>mp1;
- map<int,int>mp2;
- set<int>ch[200];
- set<char>nm[200];
- int j=i;
- //cout<<sub[j].yn<<endl;
- while(prob!=p ||team!=t){
- //cout<<i+j<<endl;
- if(j==s-1)
- break;
- if(sub[j].yn[0]=='Y'){
- char x=sub[j].p_name;
- //cout<<x<<endl;
- int n=sub[j].t_num;
- int idx=x-'A';
- ch[idx].insert(n);
- nm[n].insert(x);
- if(ch[idx].size()==t||nm[n].size()==p){
- team=0;
- prob=0;
- break;
- }
- mp1[x]++;
- mp2[n]++;
- if(mp1[x]==1)
- prob++;
- if(mp2[n]==1)
- team++;
- cnt++;
- }
- j++;
- }
- //cout<<j<<' '<<t<<' '<<p<<endl;
- if(team==t && prob==p){
- sidx=j-1;
- for(int k=sidx+1;k<s;k++){
- if(sub[k].yn[0]=='Y'){
- char x=sub[k].p_name;
- int n=sub[k].t_num;
- ch[x-'A'].insert(n);
- nm[n].insert(x);
- //cout<<ch[x-'A'].size()<<' '<<nm[n].size()<<endl;
- if(ch[x-'A'].size()==t||nm[n].size()==p){
- eidx=k;
- break;
- }
- }
- }
- break;
- }
- }
- if(sidx==-1)
- cout<<"--:--:-- --:--:--"<<endl;
- else{
- if(eidx==-1)
- cout<<sub[sidx].time<<' '<<"--:--:--"<<endl;
- else
- cout<<sub[sidx].time<<' '<<sub[eidx].time<<endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement