Advertisement
Nayeemzaman

Ideal Scoreboard

Jan 14th, 2020
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef struct node{
  4.     int t_num;
  5.     int tt;
  6.     char p_name;
  7.     char time[100];
  8.     char yn[100];
  9. }Node;
  10.  
  11. Node sub[5005];
  12. bool compare(Node a, Node b){
  13.     return a.tt<b.tt;
  14. }
  15. int main()
  16. {
  17.     int t,p,s;
  18.     while(cin>>t>>p>>s){
  19.         if(t==0&&p==0&&s==0)
  20.             return 0;
  21.  
  22.         for(int i=0;i<s;i++){
  23.             scanf("%d %c %s %[^\n]s",&sub[i].t_num,&sub[i].p_name,sub[i].time,sub[i].yn);
  24.             //gets(sub[i].yn);
  25.             //getline(cin,sub[i].yn);
  26.         }
  27.         for(int i=0;i<s;i++){
  28.             int h,m,s;
  29.             h=(sub[i].time[0]-'0')*10+(sub[i].time[1]-'0');
  30.             m=(sub[i].time[3]-'0')*10+(sub[i].time[4]-'0');
  31.             s=(sub[i].time[6]-'0')*10+(sub[i].time[7]-'0');
  32.             //cout<<h<<' '<<m<<' '<<s<<endl;
  33.             int total=(h*3600)+(m*60)+s;
  34.             //cout<<total<<endl;
  35.             sub[i].tt=total;
  36.  
  37.         }
  38.         sort(sub,sub+s,compare);
  39.         //cout<<endl;
  40.         //for(int i=0;i<s;i++)
  41.           //  cout<<sub[i].t_num<<' '<<sub[i].p_name<<' '<<sub[i].time<<' '<<sub[i].yn<<endl;
  42.         int mx;
  43.         if(t>p)
  44.             mx=t;
  45.         else
  46.             mx=p;
  47.         int sidx=-1, eidx=-1;
  48.         for(int i=0;i<s;i++){
  49.             int prob=0,team=0,cnt=0;
  50.             map<char,int>mp1;
  51.             map<int,int>mp2;
  52.             set<int>ch[200];
  53.             set<char>nm[200];
  54.             int j=i;
  55.             //cout<<sub[j].yn<<endl;
  56.             while(prob!=p ||team!=t){
  57.                 //cout<<i+j<<endl;
  58.                 if(j==s-1)
  59.                     break;
  60.                 if(sub[j].yn[0]=='Y'){
  61.  
  62.                     char x=sub[j].p_name;
  63.                     //cout<<x<<endl;
  64.                     int n=sub[j].t_num;
  65.                     int idx=x-'A';
  66.                     ch[idx].insert(n);
  67.                     nm[n].insert(x);
  68.                     if(ch[idx].size()==t||nm[n].size()==p){
  69.                         team=0;
  70.                         prob=0;
  71.                         break;
  72.                     }
  73.                     mp1[x]++;
  74.                     mp2[n]++;
  75.                     if(mp1[x]==1)
  76.                         prob++;
  77.                     if(mp2[n]==1)
  78.                         team++;
  79.                     cnt++;
  80.                 }
  81.                 j++;
  82.             }
  83.             //cout<<j<<' '<<t<<' '<<p<<endl;
  84.             if(team==t && prob==p){
  85.                 sidx=j-1;
  86.                 for(int k=sidx+1;k<s;k++){
  87.                     if(sub[k].yn[0]=='Y'){
  88.                         char x=sub[k].p_name;
  89.                         int n=sub[k].t_num;
  90.                         ch[x-'A'].insert(n);
  91.                         nm[n].insert(x);
  92.                         //cout<<ch[x-'A'].size()<<' '<<nm[n].size()<<endl;
  93.                         if(ch[x-'A'].size()==t||nm[n].size()==p){
  94.                             eidx=k;
  95.                             break;
  96.                         }
  97.                     }
  98.                 }
  99.                 break;
  100.             }
  101.         }
  102.         if(sidx==-1)
  103.             cout<<"--:--:-- --:--:--"<<endl;
  104.         else{
  105.             if(eidx==-1)
  106.                 cout<<sub[sidx].time<<' '<<"--:--:--"<<endl;
  107.             else
  108.                 cout<<sub[sidx].time<<' '<<sub[eidx].time<<endl;
  109.         }
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement