Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.68 KB | None | 0 0
  1. #include<fstream>
  2. #include<algorithm>
  3.  
  4. std::ifstream f("fotbal.in");
  5. std::ofstream g("fotbal.out");
  6.  
  7. int n, m, i, j, x, y, gx, gy;
  8.  
  9. #define WIN 3
  10. #define DRAW 1
  11.  
  12. std::pair<int, int>FinalRezult[6];
  13.  
  14. struct Team{
  15.     int nr, golaveraj, goluri_inscrise, puncte;
  16. }v[6];
  17.  
  18. bool Customize(Team a, Team b)
  19. {
  20.     if (a.puncte == b.puncte)
  21.         if (a.golaveraj == b.golaveraj)
  22.             return (a.goluri_inscrise >= b.goluri_inscrise);
  23.         else
  24.             return (a.golaveraj > b.golaveraj);
  25.     else
  26.         return (a.puncte > b.puncte);
  27. }
  28.  
  29. void Setup()
  30. {
  31.     for (i = 1; i <= n; i++)
  32.         v[i].nr = i;
  33. }
  34.  
  35. bool IsEqual(Team a, Team b)
  36. {
  37.     if (a.puncte == b.puncte && a.golaveraj == b.golaveraj && a.goluri_inscrise == b.goluri_inscrise)
  38.         return true;
  39.     return false;
  40. }
  41.  
  42. int main()
  43. {
  44.     f >> n;
  45.     m = (n - 1)*n / 2;
  46.  
  47.     for (i = 1; i <= m; i++)
  48.     {
  49.         f >> x >> y >> gx >> gy;
  50.         if (gx > gy)
  51.             v[x].puncte += WIN;
  52.         else if (gx == gy)
  53.         {
  54.             v[x].puncte += DRAW;
  55.             v[y].puncte += DRAW;
  56.         }
  57.         else
  58.             v[y].puncte += WIN;
  59.         v[x].goluri_inscrise += gx;
  60.         v[y].goluri_inscrise += gy;
  61.         v[x].golaveraj += gx - gy;
  62.         v[y].golaveraj += gy - gx;
  63.     }
  64.  
  65.     Setup();
  66.  
  67.     std::sort(v + 1, v + n + 1, Customize);
  68.  
  69.     for (i = 1; i <= n; i++)
  70.     {
  71.         if (i == 1 || !IsEqual(v[i], v[i - 1]))
  72.             FinalRezult[v[i].nr].first = i;
  73.         else
  74.             FinalRezult[v[i].nr].first = FinalRezult[v[i - 1].nr].first;
  75.     }
  76.  
  77.     for (i = n; i; i--)
  78.     {
  79.         if (i == n || !IsEqual(v[i], v[i + 1]))
  80.             FinalRezult[v[i].nr].second = i;
  81.         else
  82.             FinalRezult[v[i].nr].second = FinalRezult[v[i + 1].nr].second;
  83.     }
  84.  
  85.     for (i = 1; i <= n; i++)
  86.         g << FinalRezult[i].first << " " << FinalRezult[i].second << "\n";
  87.  
  88.     f.close();
  89.     g.close();
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement