Saleh127

UVA 10194 / Implementation

Oct 6th, 2021 (edited)
134
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4.  
  5. map<string,ll>point,played,goalscored,goalconced,goaldif,draw,win,lose;
  6.  
  7. bool cmp(string a, string b)
  8. {
  9.      if(point[a]==point[b])
  10.      {
  11.           if(win[a]==win[b])
  12.           {
  13.                if(goaldif[a]==goaldif[b])
  14.                {
  15.                     if(goalscored[a]==goalscored[b])
  16.                     {
  17.                          if(played[a]==played[b])
  18.                          {
  19.                               transform(a.begin(),a.end(),a.begin(),::toupper);
  20.                               transform(b.begin(),b.end(),b.begin(),::toupper);
  21.                               return a<b;
  22.                          }
  23.                          return played[a]<played[b];
  24.                     }
  25.                     return goalscored[a]>goalscored[b];
  26.                }
  27.                return goaldif[a]>goaldif[b];
  28.           }
  29.           return win[a]>win[b];
  30.      }
  31.      return point[a]>point[b];
  32. }
  33.  
  34.  
  35.  
  36. int main()
  37. {
  38.  
  39.    ll t;
  40.  
  41.    cin>>t;
  42.  
  43.    getchar();
  44.  
  45.    while(t--)
  46.    {
  47.         string name;
  48.         getline(cin,name);
  49.  
  50.         ll n,m,i,j,k,l;;
  51.  
  52.         cin>>n;
  53.  
  54.         getchar();
  55.  
  56.         string tname[n+5];
  57.  
  58.         for(i=0;i<n;i++)
  59.         {
  60.              getline(cin,tname[i]);
  61.         }
  62.  
  63.         cin>>m;
  64.  
  65.         getchar();
  66.  
  67.         while(m--)
  68.         {
  69.              string result,t1,t2,g1,g2;
  70.  
  71.              getline(cin,result);
  72.  
  73.              for(i=0;i<result.size();i++)
  74.              {
  75.                   if(result[i]=='#') break;
  76.                   t1+=result[i];
  77.              }
  78.  
  79.              for(j=i+1;j<result.size();j++)
  80.              {
  81.                   if(result[j]=='@') break;
  82.                   g1+=result[j];
  83.              }
  84.  
  85.              for(i=j+1;i<result.size();i++)
  86.              {
  87.                   if(result[i]=='#') break;
  88.                   g2+=result[i];
  89.              }
  90.  
  91.              for(j=i+1;j<result.size();j++)
  92.              {
  93.                   t2+=result[j];
  94.              }
  95.  
  96.              ll goal1=stoi(g1);
  97.              ll goal2=stoi(g2);
  98.  
  99.              goalscored[t1]+=goal1;
  100.              goalconced[t1]+=goal2;
  101.              goaldif[t1]+=(goal1-goal2);
  102.              played[t1]++;
  103.  
  104.  
  105.              goalscored[t2]+=goal2;
  106.              goalconced[t2]+=goal1;
  107.              goaldif[t2]+=(goal2-goal1);
  108.              played[t2]++;
  109.  
  110.              if(goal1>goal2)
  111.              {
  112.                   point[t1]+=3;
  113.                   win[t1]++;
  114.                   lose[t2]++;
  115.              }
  116.              else if(goal1<goal2)
  117.              {
  118.                   point[t2]+=3;
  119.                   win[t2]++;
  120.                   lose[t1]++;
  121.              }
  122.              else
  123.              {
  124.                   point[t1]++;
  125.                   draw[t1]++;
  126.  
  127.                   point[t2]++;
  128.                   draw[t2]++;
  129.              }
  130.         }
  131.  
  132.         sort(tname,tname+n,cmp);
  133.  
  134.         cout<<name<<endl;
  135.  
  136.         for(i=0;i<n;i++)
  137.         {
  138.              cout<<i+1<<") "<<tname[i]<<" "<<point[tname[i]]<<"p, "<<played[tname[i]]<<"g (";
  139.  
  140.              cout<<win[tname[i]]<<"-"<<draw[tname[i]]<<"-"<<lose[tname[i]]<<"), ";
  141.  
  142.              cout<<goaldif[tname[i]]<<"gd ("<<goalscored[tname[i]]<<"-"<<goalconced[tname[i]]<<")"<<endl;
  143.         }
  144.  
  145.         if(t) cout<<endl;
  146.  
  147.         point.clear();
  148.         played.clear();
  149.         goalscored.clear();
  150.         goalconced.clear();
  151.         goaldif.clear();
  152.         draw.clear();
  153.         win.clear();
  154.         lose.clear();
  155.    }
  156.  
  157.    return 0;
  158. }
  159.  
RAW Paste Data Copied