fork(1) download
  1. using System;
  2.  
  3. public class Test
  4. {
  5. public static void Main()
  6. {
  7. // your code goes here
  8. for (int A = 1; A <= 5; A++)
  9. {
  10. for (int B = 1; B <= 5; B++)
  11. {
  12. if (A == B) continue;
  13. for (int C = 1; C <= 5; C++)
  14. {
  15. if (A == C || B == C) continue;
  16. Console.Write("IN: A={0} B={1} C={2} OUT: ", A, B, C);
  17. Solve(A, B, C);
  18. }
  19. }
  20. }
  21. }
  22.  
  23. struct Player
  24. {
  25. public int Number;
  26. public bool Answered;
  27. }
  28.  
  29. enum Result
  30. {
  31. Max,
  32. Min,
  33. Mid,
  34. Unknown
  35. }
  36.  
  37. static void Solve(int A, int B, int C)
  38. {
  39.  
  40. Player[] players = new Player[3];
  41.  
  42. players[0].Number = A;
  43. players[1].Number = B;
  44. players[2].Number = C;
  45.  
  46. for (int turn = 0; turn < 10; turn++)
  47. {
  48. char id = "ABC"[turn%3];
  49. Result result = Think(players[(turn+1)%3], players[(turn+2)%3]);
  50. bool valid = false;
  51. switch (result)
  52. {
  53. case Result.Unknown:
  54. Console.Write("{0} =>?, ", id);
  55. break;
  56. case Result.Max:
  57. valid = players[turn%3].Number > players[(turn+1)%3].Number && players[turn%3].Number > players[(turn+2)%3].Number;
  58. goto default;
  59. case Result.Min:
  60. valid = players[turn%3].Number < players[(turn+1)%3].Number && players[turn%3].Number < players[(turn+2)%3].Number;
  61. goto default;
  62. case Result.Mid:
  63. valid |= players[turn%3].Number < players[(turn+1)%3].Number && players[turn%3].Number > players[(turn+2)%3].Number;
  64. valid |= players[turn%3].Number > players[(turn+1)%3].Number && players[turn%3].Number < players[(turn+2)%3].Number;
  65. goto default;
  66. default:
  67. if (!valid) Console.Write("[invalid]");
  68. Console.WriteLine("{0} =>{1}", id, result.ToString().ToUpper());
  69. return;
  70. }
  71. players[turn%3].Answered = true;
  72. }
  73.  
  74.  
  75. }
  76.  
  77. static Result Think(Player playerX, Player playerY)
  78. {
  79. bool[] flag = new bool[6];
  80.  
  81. Player[] players = {playerX, playerY};
  82.  
  83. foreach (Player player in players)
  84. {
  85. flag[player.Number] = true;
  86. if (!player.Answered) continue;
  87. int number = playerX.Number + playerY.Number - player.Number;
  88. if (number == 4) flag[5] = true;
  89. if (number == 5) flag[1] = flag[4] = true;
  90. if (number == 1) flag[2] = flag[5] = true;
  91. if (number == 2) flag[1] = true;
  92. }
  93.  
  94. int all = 0;
  95. int min = 0;
  96. int max = 0;
  97. int mid = 0;
  98.  
  99. for (int number = 1; number <= 5; number++)
  100. {
  101. if (flag[number]) continue;
  102. all++;
  103. if (number > playerX.Number && number > playerY.Number) max++;
  104. if (number < playerX.Number && number < playerY.Number) min++;
  105. if (number < playerX.Number && number > playerY.Number) mid++;
  106. if (number > playerX.Number && number < playerY.Number) mid++;
  107. }
  108.  
  109. if (max == all) return Result.Max;
  110. if (min == all) return Result.Min;
  111. if (mid == all) return Result.Mid;
  112.  
  113. return Result.Unknown;
  114. }
  115. }
Success #stdin #stdout 0.02s 131520KB
stdin
Standard input is empty
stdout
IN: A=1 B=2 C=3  OUT: A =>?, B =>?, C =>MAX
IN: A=1 B=2 C=4  OUT: A =>?, B =>MID
IN: A=1 B=2 C=5  OUT: A =>?, B =>MID
IN: A=1 B=3 C=2  OUT: A =>?, B =>MAX
IN: A=1 B=3 C=4  OUT: A =>?, B =>MID
IN: A=1 B=3 C=5  OUT: A =>?, B =>MID
IN: A=1 B=4 C=2  OUT: A =>?, B =>MAX
IN: A=1 B=4 C=3  OUT: A =>?, B =>?, C =>MID
IN: A=1 B=4 C=5  OUT: A =>MIN
IN: A=1 B=5 C=2  OUT: A =>?, B =>MAX
IN: A=1 B=5 C=3  OUT: A =>?, B =>?, C =>MID
IN: A=1 B=5 C=4  OUT: A =>MIN
IN: A=2 B=1 C=3  OUT: A =>?, B =>?, C =>MAX
IN: A=2 B=1 C=4  OUT: A =>?, B =>?, C =>MAX
IN: A=2 B=1 C=5  OUT: A =>MID
IN: A=2 B=3 C=1  OUT: A =>?, B =>MAX
IN: A=2 B=3 C=4  OUT: A =>?, B =>?, C =>MAX
IN: A=2 B=3 C=5  OUT: A =>?, B =>MID
IN: A=2 B=4 C=1  OUT: A =>?, B =>MAX
IN: A=2 B=4 C=3  OUT: A =>?, B =>?, C =>MID
IN: A=2 B=4 C=5  OUT: A =>MIN
IN: A=2 B=5 C=1  OUT: A =>MID
IN: A=2 B=5 C=3  OUT: A =>?, B =>?, C =>MID
IN: A=2 B=5 C=4  OUT: A =>MIN
IN: A=3 B=1 C=2  OUT: A =>MAX
IN: A=3 B=1 C=4  OUT: A =>?, B =>MIN
IN: A=3 B=1 C=5  OUT: A =>MID
IN: A=3 B=2 C=1  OUT: A =>MAX
IN: A=3 B=2 C=4  OUT: A =>?, B =>MIN
IN: A=3 B=2 C=5  OUT: A =>?, B =>MIN
IN: A=3 B=4 C=1  OUT: A =>?, B =>MAX
IN: A=3 B=4 C=2  OUT: A =>?, B =>MAX
IN: A=3 B=4 C=5  OUT: A =>MIN
IN: A=3 B=5 C=1  OUT: A =>MID
IN: A=3 B=5 C=2  OUT: A =>?, B =>MAX
IN: A=3 B=5 C=4  OUT: A =>MIN
IN: A=4 B=1 C=2  OUT: A =>MAX
IN: A=4 B=1 C=3  OUT: A =>?, B =>?, C =>MID
IN: A=4 B=1 C=5  OUT: A =>MID
IN: A=4 B=2 C=1  OUT: A =>MAX
IN: A=4 B=2 C=3  OUT: A =>?, B =>?, C =>MID
IN: A=4 B=2 C=5  OUT: A =>?, B =>MIN
IN: A=4 B=3 C=1  OUT: A =>?, B =>MID
IN: A=4 B=3 C=2  OUT: A =>?, B =>?, C =>MIN
IN: A=4 B=3 C=5  OUT: A =>?, B =>MIN
IN: A=4 B=5 C=1  OUT: A =>MID
IN: A=4 B=5 C=2  OUT: A =>?, B =>?, C =>MIN
IN: A=4 B=5 C=3  OUT: A =>?, B =>?, C =>MIN
IN: A=5 B=1 C=2  OUT: A =>MAX
IN: A=5 B=1 C=3  OUT: A =>?, B =>?, C =>MID
IN: A=5 B=1 C=4  OUT: A =>?, B =>MIN
IN: A=5 B=2 C=1  OUT: A =>MAX
IN: A=5 B=2 C=3  OUT: A =>?, B =>?, C =>MID
IN: A=5 B=2 C=4  OUT: A =>?, B =>MIN
IN: A=5 B=3 C=1  OUT: A =>?, B =>MID
IN: A=5 B=3 C=2  OUT: A =>?, B =>MID
IN: A=5 B=3 C=4  OUT: A =>?, B =>MIN
IN: A=5 B=4 C=1  OUT: A =>?, B =>MID
IN: A=5 B=4 C=2  OUT: A =>?, B =>MID
IN: A=5 B=4 C=3  OUT: A =>?, B =>?, C =>MIN