Statistics

Problem Statement for "PartisanGame"

Problem Statement

Alice and Bob play a game with a pile of stones. Initially, there are n stones in the pile. The players take alternating turns, Alice goes first.

You are given two int[]s: a and b. The elements of a are allowed moves for Alice, and the elements of b are allowed moves for Bob.

In each turn, the current player must remove some stones from the pile. The number of removed stones must be equal to one of the player's allowed moves. If a player cannot take a valid turn, they lose the game.

Assume that both Alice and Bob play the game optimally. Return "Alice" if Alice wins, or "Bob" if Bob wins. In other words, return "Alice" if and only if the first player has a winning strategy for the given n, a, and b.

Definition

Class:
PartisanGame
Method:
getWinner
Parameters:
int, int[], int[]
Returns:
String
Method signature:
String getWinner(int n, int[] a, int[] b)
(be sure your method is public)

Constraints

  • n will be between 0 and 1,000,000,000, inclusive.
  • all elements of a will be distinct.
  • all elements of b will be distinct.
  • all elements of a will be between 1 and 5, inclusive.
  • all elements of b will be between 1 and 5, inclusive.

Examples

  1. 1

    {1, 2, 3, 4}

    {1, 2, 5}

    Returns: "Alice"

  2. 1

    {1, 2, 3, 4, 5}

    {2}

    Returns: "Alice"

  3. 2

    {4}

    {2, 3}

    Returns: "Bob"

  4. 3

    {5}

    {1, 4, 5}

    Returns: "Bob"

  5. 4

    {5}

    {4, 5}

    Returns: "Bob"

  6. 5

    {1, 2, 3, 4}

    {1, 3, 4}

    Returns: "Alice"

  7. 4

    {1, 2, 3, 4, 5}

    {1, 3}

    Returns: "Alice"

  8. 8

    {1, 5}

    {3, 4}

    Returns: "Bob"

  9. 20

    {1, 3, 4, 5}

    {1, 2, 3, 4, 5}

    Returns: "Bob"

  10. 15

    {1, 3}

    {1, 4}

    Returns: "Bob"

  11. 15

    {1, 2, 4, 5}

    {3, 4}

    Returns: "Alice"

  12. 894

    {3, 4}

    {4, 5}

    Returns: "Alice"

  13. 19135

    {3, 4}

    {4}

    Returns: "Alice"

  14. 828191

    {2}

    {1, 5}

    Returns: "Bob"

  15. 37

    {1, 2, 4}

    {3, 5}

    Returns: "Alice"

  16. 343

    {4}

    {1, 2, 3, 5}

    Returns: "Bob"

  17. 1300

    {5}

    {1, 2, 3, 4}

    Returns: "Bob"

  18. 18452

    {1, 2}

    {3, 4, 5}

    Returns: "Bob"

  19. 380057

    {1, 4, 5}

    {2, 3}

    Returns: "Alice"

  20. 158260522

    {2, 4}

    {4}

    Returns: "Alice"

  21. 167959139

    {1, 2, 3, 4}

    {1, 2, 5}

    Returns: "Alice"

  22. 641009859

    {1, 2, 3, 4, 5}

    {2}

    Returns: "Alice"

  23. 524125987

    {4}

    {2, 3}

    Returns: "Bob"

  24. 702209411

    {5}

    {1, 4, 5}

    Returns: "Bob"

  25. 585325539

    {5}

    {4, 5}

    Returns: "Bob"

  26. 941492387

    {1, 2, 3, 4, 5}

    {1, 3}

    Returns: "Alice"

  27. 58376259

    {1, 2, 3, 4}

    {1, 3, 4}

    Returns: "Alice"

  28. 824608515

    {1, 2, 5}

    {1, 3, 5}

    Returns: "Alice"

  29. 2691939

    {5}

    {1, 5}

    Returns: "Bob"

  30. 802030518

    {1, 5}

    {3, 4}

    Returns: "Bob"

  31. 685146646

    {2, 5}

    {1, 3, 4}

    Returns: "Bob"

  32. 863230070

    {2, 4}

    {1, 4}

    Returns: "Alice"

  33. 41313494

    {2, 3, 4, 5}

    {5}

    Returns: "Alice"

  34. 219396918

    {1, 3}

    {1, 3, 5}

    Returns: "Bob"

  35. 102513046

    {1, 5}

    {1, 3}

    Returns: "Bob"

  36. 985629174

    {1, 4, 5}

    {2, 3, 5}

    Returns: "Bob"

  37. 458679894

    {2, 4}

    {1, 4}

    Returns: "Alice"

  38. 341796022

    {2, 3, 4, 5}

    {3, 4, 5}

    Returns: "Alice"

  39. 167959139

    {1, 2, 3, 4}

    {5}

    Returns: "Alice"

  40. 641009859

    {2}

    {1, 3, 4, 5}

    Returns: "Bob"

  41. 524125987

    {4}

    {1, 2, 3, 5}

    Returns: "Bob"

  42. 702209411

    {5}

    {1, 2, 3, 4}

    Returns: "Bob"

  43. 585325539

    {5}

    {1, 2, 3, 4}

    Returns: "Bob"

  44. 941492387

    {1, 3}

    {2, 4, 5}

    Returns: "Bob"

  45. 58376259

    {1, 2, 3, 4}

    {5}

    Returns: "Alice"

  46. 824608515

    {1, 2, 5}

    {3, 4}

    Returns: "Alice"

  47. 2691939

    {5}

    {1, 2, 3, 4}

    Returns: "Bob"

  48. 802030518

    {1, 5}

    {2, 3, 4}

    Returns: "Bob"

  49. 685146646

    {2, 5}

    {1, 3, 4}

    Returns: "Bob"

  50. 863230070

    {2, 4}

    {1, 3, 5}

    Returns: "Bob"

  51. 41313494

    {2, 3, 4, 5}

    {1}

    Returns: "Alice"

  52. 219396918

    {1, 3}

    {2, 4, 5}

    Returns: "Bob"

  53. 102513046

    {1, 5}

    {2, 3, 4}

    Returns: "Bob"

  54. 985629174

    {1, 4, 5}

    {2, 3}

    Returns: "Alice"

  55. 458679894

    {2, 4}

    {1, 3, 5}

    Returns: "Bob"

  56. 341796022

    {2, 3, 4, 5}

    {1}

    Returns: "Alice"

  57. 1000000000

    {2, 3}

    {4, 5}

    Returns: "Alice"

  58. 7

    {3, 4}

    {4}

    Returns: "Alice"

    Alice should take 4 stones from the pile. This will leave a pile of only 3 stones. In that situation, Bob has no valid move. (His only allowed move is 4, but it is not possible to remove 4 stones from a pile of only 3 stones.) Thus, Bob loses the game.

  59. 10

    {1}

    {4, 3, 2}

    Returns: "Bob"

    One winning strategy for Bob is to always take 4 stones. If Bob follows this strategy, Alice will lose the game during her third turn.

  60. 104982

    {2, 3, 4, 5}

    {2, 5}

    Returns: "Alice"

  61. 999999999

    {4}

    {5}

    Returns: "Bob"

  62. 1000000000

    {1,2,3,4,5}

    {1,2,3,4,5}

    Returns: "Alice"

  63. 20

    {1 }

    {1 }

    Returns: "Bob"

  64. 10

    {2 }

    {5 }

    Returns: "Alice"

  65. 6

    {1, 2, 3, 4, 5 }

    {1, 2, 3, 4, 5 }

    Returns: "Bob"

  66. 1000000000

    {1, 2, 3, 4 }

    {1, 2, 3, 4, 5 }

    Returns: "Bob"

  67. 1006

    {5 }

    {5 }

    Returns: "Alice"

  68. 8

    {1, 3, 4 }

    {4 }

    Returns: "Alice"

  69. 504

    {2 }

    {5 }

    Returns: "Bob"

  70. 1

    {5 }

    {4 }

    Returns: "Bob"

  71. 6

    {1, 2 }

    {3 }

    Returns: "Alice"

  72. 100794

    {3, 5 }

    {1, 5 }

    Returns: "Bob"

  73. 14403

    {3 }

    {3, 5 }

    Returns: "Bob"

  74. 536870912

    {1, 2, 5 }

    {3, 4, 5 }

    Returns: "Alice"

  75. 3000

    {1, 2 }

    {1, 2 }

    Returns: "Bob"

  76. 999999999

    {1, 3 }

    {2, 3, 4, 5 }

    Returns: "Bob"

  77. 999999900

    {2 }

    {5 }

    Returns: "Alice"

  78. 121

    {3, 4 }

    {4 }

    Returns: "Alice"

  79. 999999990

    {1, 2, 3, 4, 5 }

    {1, 2, 3, 4, 5 }

    Returns: "Bob"

  80. 10

    { }

    {1 }

    Returns: "Bob"

  81. 140512

    {3, 4 }

    {2 }

    Returns: "Alice"

  82. 0

    {1, 2, 3, 4, 5 }

    {1, 2, 3, 4, 5 }

    Returns: "Bob"

  83. 104982

    { }

    {2, 5 }

    Returns: "Bob"

  84. 1000000000

    {1, 2, 3, 4, 5 }

    {1, 2, 3, 4, 5 }

    Returns: "Alice"

  85. 1000000000

    {1, 2 }

    {1, 3 }

    Returns: "Alice"

  86. 7002

    {2 }

    {5 }

    Returns: "Alice"

  87. 144108929

    {1 }

    {1, 3 }

    Returns: "Alice"

  88. 433039488

    {1, 4, 5 }

    {1, 2 }

    Returns: "Bob"

  89. 999999999

    {1 }

    {1, 3 }

    Returns: "Alice"

  90. 999999997

    {1, 3 }

    {2, 3, 4 }

    Returns: "Alice"

  91. 1808

    {1, 5 }

    {1, 4 }

    Returns: "Bob"

  92. 36288000

    {1, 2, 5 }

    {3, 4, 5 }

    Returns: "Alice"

  93. 3

    {5 }

    { }

    Returns: "Bob"

  94. 1

    {2, 4, 5 }

    {1, 2, 3 }

    Returns: "Bob"

  95. 605

    {5 }

    {1, 2, 3, 4, 5 }

    Returns: "Bob"

  96. 14405

    {5 }

    {1, 2, 3, 4, 5 }

    Returns: "Bob"

  97. 2520

    {2, 3, 4, 5 }

    {2, 5 }

    Returns: "Alice"

  98. 13

    {5 }

    {5 }

    Returns: "Bob"

  99. 123

    {4 }

    {3 }

    Returns: "Alice"

  100. 3

    {1 }

    {1 }

    Returns: "Alice"

  101. 17724120

    {1, 2, 3, 5 }

    {1, 2, 4 }

    Returns: "Alice"

  102. 1200007

    {1 }

    {1 }

    Returns: "Alice"

  103. 1000080

    {4 }

    {3 }

    Returns: "Alice"

  104. 72

    {2, 3 }

    {1 }

    Returns: "Alice"

  105. 987654321

    {1, 3, 5 }

    {1, 2, 4 }

    Returns: "Bob"

  106. 162698

    {4 }

    {3 }

    Returns: "Alice"

  107. 1234567

    {1, 4, 5 }

    {1, 3, 4, 5 }

    Returns: "Alice"

  108. 700000004

    {3 }

    {4 }

    Returns: "Alice"

  109. 2162161

    {2, 3, 4, 5 }

    {5 }

    Returns: "Alice"

  110. 15001

    {2, 3, 4, 5 }

    {2, 4 }

    Returns: "Alice"

  111. 7

    {1 }

    {2, 3, 5 }

    Returns: "Bob"

  112. 283274026

    {1 }

    {2 }

    Returns: "Alice"

  113. 100002

    {3, 4 }

    {4 }

    Returns: "Alice"


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: