using System; public class Test { public static void Main() { // your code goes here for (int A = 1; A <= 5; A++) { for (int B = 1; B <= 5; B++) { if (A == B) continue; for (int C = 1; C <= 5; C++) { if (A == C || B == C) continue; Console.Write("IN: A={0} B={1} C={2} OUT: ", A, B, C); Solve(A, B, C); } } } } struct Player { public int Number; public bool Answered; } enum Result { Max, Min, Mid, Unknown } static void Solve(int A, int B, int C) { Player[] players = new Player[3]; players[0].Number = A; players[1].Number = B; players[2].Number = C; for (int turn = 0; turn < 10; turn++) { char id = "ABC"[turn%3]; Result result = Think(players[(turn+1)%3], players[(turn+2)%3]); bool valid = false; switch (result) { case Result.Unknown: Console.Write("{0} =>?, ", id); break; case Result.Max: valid = players[turn%3].Number > players[(turn+1)%3].Number && players[turn%3].Number > players[(turn+2)%3].Number; goto default; case Result.Min: valid = players[turn%3].Number < players[(turn+1)%3].Number && players[turn%3].Number < players[(turn+2)%3].Number; goto default; case Result.Mid: valid |= players[turn%3].Number < players[(turn+1)%3].Number && players[turn%3].Number > players[(turn+2)%3].Number; valid |= players[turn%3].Number > players[(turn+1)%3].Number && players[turn%3].Number < players[(turn+2)%3].Number; goto default; default: if (!valid) Console.Write("[invalid]"); Console.WriteLine("{0} =>{1}", id, result.ToString().ToUpper()); return; } players[turn%3].Answered = true; } } static Result Think(Player playerX, Player playerY) { bool[] flag = new bool[6]; Player[] players = {playerX, playerY}; foreach (Player player in players) { flag[player.Number] = true; if (!player.Answered) continue; int number = playerX.Number + playerY.Number - player.Number; if (number == 4) flag[5] = true; if (number == 5) flag[1] = flag[4] = true; if (number == 1) flag[2] = flag[5] = true; if (number == 2) flag[1] = true; } int all = 0; int min = 0; int max = 0; int mid = 0; for (int number = 1; number <= 5; number++) { if (flag[number]) continue; all++; if (number > playerX.Number && number > playerY.Number) max++; if (number < playerX.Number && number < playerY.Number) min++; if (number < playerX.Number && number > playerY.Number) mid++; if (number > playerX.Number && number < playerY.Number) mid++; } if (max == all) return Result.Max; if (min == all) return Result.Min; if (mid == all) return Result.Mid; return Result.Unknown; } }
Standard input is empty
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