fork download
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. int main() {
  6. int n, counter, max, pointer;
  7. cin >> n;
  8. bool flag;
  9. map<string, int> result;
  10. result["Isenbaev"] = 0;
  11. string ar[3];
  12. while(n--)
  13. {
  14. flag = false;
  15. max = -1;
  16. pointer = -1;
  17. counter = 0;
  18. cin >> ar[0];
  19. cin >> ar[1];
  20. cin >> ar[2];
  21. if (ar[0] == "Isenbaev")
  22. {
  23. result[ar[1]] = 1;
  24. result[ar[2]] = 1;
  25. flag = true;
  26. }
  27. else if (ar[1] == "Isenbaev")
  28. {
  29. result[ar[0]] = 1;
  30. result[ar[2]] = 1;
  31. flag = true;
  32. }
  33. else if (ar[2] == "Isenbaev")
  34. {
  35. result[ar[0]] = 1;
  36. result[ar[1]] = 1;
  37. flag = true;
  38. }
  39. else for (int i = 0; i < 3; i++)
  40. {
  41. if (result[ar[i]] > max)
  42. {
  43. max = result[ar[i]];
  44. pointer = i;
  45. }
  46. }
  47. if (max != -1)
  48. for (int i = 0; i < 3; i++)
  49. {
  50. if (i != pointer) result[ar[i]] = max + 1;
  51. }
  52. else if (!flag)
  53. {
  54. result[ar[0]]=-1;
  55. result[ar[1]]=-1;
  56. result[ar[2]]=-1;
  57. }
  58. }
  59. for (map<string, int>::iterator it=result.begin(); it!=result.end(); ++it)
  60. if (it->second == -1)
  61. cout << it->first << " " << "undefined" << '\n';
  62. else
  63. cout << it->first << " " << it->second << '\n';
  64.  
  65. return 0;
  66. }
Success #stdin #stdout 0s 3240KB
stdin
7
Isenbaev Oparin Toropov
Ayzenshteyn Oparin Samsonov
Ayzenshteyn Chevdar Samsonov
Fominykh Isenbaev Oparin
Dublennykh Fominykh Ivankov
Burmistrov Dublennykh Kurpilyanskiy
Cormen Leiserson Rivest
stdout
Ayzenshteyn 2
Burmistrov 3
Chevdar 3
Cormen 0
Dublennykh 2
Fominykh 1
Isenbaev 0
Ivankov 2
Kurpilyanskiy 3
Leiserson 1
Oparin 1
Rivest 1
Samsonov 3
Toropov 1