fork download
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. using namespace std;
  6.  
  7. bool endIn(int a, int b, int c, int d, int e)
  8. {
  9. if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0)
  10. return false;
  11. return true;
  12. }
  13.  
  14. int compare(const void * a, const void * b)
  15. {
  16. return (*(int*)a - *(int*)b);
  17. }
  18.  
  19. bool check[52];
  20.  
  21. int main()
  22. {
  23. int p1[3], p2[2], aux, c=0, max, maxind;
  24. int z[3] = {0, 0, 0};
  25. bool flag, win[2], sup[3];
  26. while (scanf("%d %d %d %d %d", &p1[0], &p1[1], &p1[2], &p2[0], &p2[1]), endIn(p1[0], p1[1], p1[2], p2[0], p2[1]))
  27. {
  28. qsort(p1, 3, sizeof(int), compare);
  29. qsort(p2, 2, sizeof(int), compare);
  30. memset(check, false, sizeof(check));
  31. memset(z, 0, sizeof(z));
  32. memset(win, false, sizeof(win));
  33. memset(sup, false, sizeof(sup));
  34. flag = false;
  35. c = max = 0;
  36. for (int i = 0; i < 3; i++)
  37. {
  38. for (int j = 0; j < 2; j++)
  39. {
  40. if (p1[i] > p2[j]){
  41. z[i]++;
  42. if( !win[j] && !sup[i])
  43. {
  44. win[j] = true;
  45. sup[i] = true;
  46. }
  47. }
  48. }
  49. }
  50. for(int i = 0; i < 3; i++)
  51. {
  52. if(z[i] > 0)
  53. c += z[i];
  54. if(z[i] > 2)
  55. {
  56. flag = true;
  57. aux = i;
  58. }
  59. }
  60. if (c >= 4 || (win[0] && win[1]) || (p1[1] == 50 && p1[2] == 51))
  61. {
  62. printf("-1\n");
  63. continue;
  64. }
  65. check[p1[0]] = true;
  66. check[p1[1]] = true;
  67. check[p1[2]] = true;
  68. check[p2[0]] = true;
  69. check[p2[1]] = true;
  70. if(flag)
  71. {
  72. for(int i = 0; i < 3; i++)
  73. {
  74. if( i != aux )
  75. {
  76. if(p1[i] > max)
  77. {
  78. max = p1[i];
  79. maxind = i;
  80. }
  81. }
  82. }
  83. aux = max;
  84. }
  85. else
  86. {
  87. if(c == 3)
  88. {
  89. aux = p1[2];
  90. maxind = 2;
  91. }
  92. else if( c == 0)
  93. {
  94. aux = 1;
  95. maxind = 0;
  96. }
  97. else if( c == 1 )
  98. {
  99. aux = p1[1];
  100. maxind = 1;
  101. }
  102. else
  103. {
  104. aux = z[2] == 2 ? p1[1] : p1[2];
  105. maxind = z[2] == 2 ? 1 : 2 ;
  106. }
  107. }
  108. while (check[aux])
  109. if(aux < 52)
  110. aux++;
  111. else
  112. {
  113. aux = p1[--maxind];
  114. c++;
  115. }
  116. printf("%d\n", aux);
  117. }
  118. return 0;
  119. }
Success #stdin #stdout 0s 3460KB
stdin
28 51 29 50 52
50 26 19 10 27
10 20 30 24 26
46 48 49 47 50
0 0 0 0 0
stdout
30
-1
21
51