Problem Statement
Definition
- Class:
- StonesGame
- Method:
- winner
- Parameters:
- int, int, int, int
- Returns:
- String
- Method signature:
- String winner(int N, int M, int K, int L)
- (be sure your method is public)
Constraints
- N will be between 2 and 1,000,000, inclusive.
- M, K and L will each be between 1 and N, inclusive.
- M and L will be different.
Examples
2
1
2
2
Returns: "Romeo"
3
1
1
2
Returns: "Draw"
There are three stones and the stone in position 1 is white. To win the game, a player must put the white stone in position 2. However, since K is 1, each player can only choose a single stone to reverse, so it is impossible to move the white stone from its original position. Therefore, neither player can win.
5
1
2
2
Returns: "Romeo"
Romeo can win on his first move by reversing the order of the first two stones.
5
5
2
3
Returns: "Strangelet"
Romeo's only possible move is to reverse the last two stones. This puts the white stone in position 4. Strangelet can then reverse the third and fourth stones, putting the white stone in position 3 and winning the game.
5
5
2
2
Returns: "Draw"
This is similar to the previous example, but here, the white stone must be moved to position 2. As in the previous example, Romeo's first move will put the white stone in position 4. This time, Strangelet will then move it back to position 5 because otherwise, Romeo would move it to position 2 and win. This sequence of moves will repeat infinitely and neither player will win.
2
1
1
2
Returns: "Draw"
2
2
1
1
Returns: "Draw"
2
1
2
2
Returns: "Romeo"
2
2
2
1
Returns: "Romeo"
3
1
1
2
Returns: "Draw"
3
1
1
3
Returns: "Draw"
3
2
1
1
Returns: "Draw"
3
2
1
3
Returns: "Draw"
3
3
1
1
Returns: "Draw"
3
3
1
2
Returns: "Draw"
3
1
2
2
Returns: "Romeo"
3
1
2
3
Returns: "Strangelet"
3
2
2
1
Returns: "Romeo"
3
2
2
3
Returns: "Romeo"
3
3
2
1
Returns: "Strangelet"
3
3
2
2
Returns: "Romeo"
3
1
3
2
Returns: "Draw"
3
1
3
3
Returns: "Romeo"
3
2
3
1
Returns: "Draw"
3
2
3
3
Returns: "Draw"
3
3
3
1
Returns: "Romeo"
3
3
3
2
Returns: "Draw"
10
1
8
5
Returns: "Strangelet"
9
3
3
9
Returns: "Draw"
6
6
4
2
Returns: "Strangelet"
6
1
3
4
Returns: "Draw"
8
2
5
7
Returns: "Draw"
9
6
8
7
Returns: "Draw"
7
6
2
2
Returns: "Draw"
10
3
9
10
Returns: "Draw"
10
5
10
6
Returns: "Romeo"
10
4
2
3
Returns: "Romeo"
8
8
1
6
Returns: "Draw"
10
5
9
8
Returns: "Draw"
9
8
7
4
Returns: "Romeo"
10
9
2
10
Returns: "Romeo"
9
7
3
6
Returns: "Draw"
5
3
2
1
Returns: "Draw"
9
1
5
6
Returns: "Draw"
7
7
3
4
Returns: "Draw"
8
3
8
5
Returns: "Draw"
10
10
9
5
Returns: "Draw"
1000000
131525
705444
275309
Returns: "Strangelet"
1000000
251567
705444
6097
Returns: "Draw"
1000000
804588
705444
292263
Returns: "Romeo"
1000000
791181
347709
721626
Returns: "Draw"
1000000
43795
347709
506697
Returns: "Strangelet"
1000000
595477
347709
275837
Returns: "Romeo"
1000000
157692
569590
680270
Returns: "Strangelet"
1000000
141323
569590
144412
Returns: "Draw"
1000000
127671
569590
464318
Returns: "Romeo"
1000000
418768
623197
388979
Returns: "Draw"
1000000
205057
623197
459153
Returns: "Romeo"
1000000
187669
623197
410751
Returns: "Strangelet"
1000000
279207
267101
658544
Returns: "Draw"
1000000
897139
267101
646247
Returns: "Romeo"
1000000
986533
267101
708351
Returns: "Strangelet"
1000000
357987
475408
202189
Returns: "Draw"
1000000
971540
475408
333102
Returns: "Strangelet"
1000000
805503
475408
624982
Returns: "Romeo"
1000000
918661
676615
730548
Returns: "Draw"
1000000
238455
676615
664919
Returns: "Romeo"
1000000
821658
676615
801838
Returns: "Strangelet"
1000000
467470
270595
380885
Returns: "Draw"
1000000
662889
270595
600781
Returns: "Romeo"
1000000
922371
270595
910759
Returns: "Strangelet"
1000000
220322
93517
660116
Returns: "Draw"
1000000
374352
93517
354850
Returns: "Romeo"
1000000
965405
93517
861365
Returns: "Strangelet"
1000000
907614
548991
220911
Returns: "Draw"
1000000
238793
548991
242437
Returns: "Strangelet"
1000000
730836
548991
640234
Returns: "Romeo"
999999
1
500000
999999
Returns: "Strangelet"
1000000
100000
500000
600000
Returns: "Strangelet"
1000000
1000000
1000000
999999
Returns: "Draw"
137
85
32
116
Returns: "Romeo"
954
545
2
58
Returns: "Draw"
6
5
1
2
Returns: "Draw"
7
1
7
5
Returns: "Draw"
42
1
2
17
Returns: "Draw"
232
1
160
2
Returns: "Draw"
96
85
21
65
Returns: "Romeo"
4
1
4
3
Returns: "Draw"
3
1
3
3
Returns: "Romeo"
946
243
1
426
Returns: "Draw"
44
13
2
30
Returns: "Draw"
36
36
26
14
Returns: "Draw"
153
153
63
44
Returns: "Draw"
6
2
4
6
Returns: "Draw"
5
1
4
2
Returns: "Draw"
6
4
3
1
Returns: "Draw"
1000000
494613
498765
999813
Returns: "Draw"
1000000
999998
3899
5
Returns: "Draw"
5
1
3
2
Returns: "Draw"
1000
333
412
612
Returns: "Romeo"
10
1
10
5
Returns: "Draw"
1000000
123
12
1231
Returns: "Draw"
999999
834753
483140
999925
Returns: "Draw"
1000
45
2
67
Returns: "Draw"
4
1
4
2
Returns: "Draw"
1000000
76543
7896
789657
Returns: "Draw"
5
4
4
5
Returns: "Draw"
5
4
5
5
Returns: "Draw"
5
1
5
2
Returns: "Draw"
999997
7943
1327
999977
Returns: "Draw"
1000000
100000
500000
600002
Returns: "Strangelet"
7
4
7
6
Returns: "Draw"
5
4
3
5
Returns: "Draw"
100
50
5
51
Returns: "Draw"
1000000
2
999999
999997
Returns: "Draw"
1000000
499999
2
500001
Returns: "Draw"
50000
100
100
200
Returns: "Draw"
7
4
4
2
Returns: "Draw"
100
1
3
2
Returns: "Draw"
1000000
500000
478
877849
Returns: "Draw"
5
3
3
4
Returns: "Draw"
10
5
5
6
Returns: "Draw"
4
3
3
4
Returns: "Draw"
100
10
5
11
Returns: "Draw"
6
6
5
4
Returns: "Strangelet"
1000000
100000
500001
6000
Returns: "Draw"
100
99
10
100
Returns: "Draw"
10
3
5
6
Returns: "Draw"
7
3
7
4
Returns: "Draw"
5
3
5
4
Returns: "Draw"
100
30
11
25
Returns: "Draw"
100000
1
9999
8
Returns: "Draw"
999337
2
999337
1
Returns: "Draw"
4
2
4
4
Returns: "Draw"
1000000
100000
200000
500000
Returns: "Draw"
6
1
6
4
Returns: "Draw"
1000000
100000
500000
1
Returns: "Draw"
6
2
6
6
Returns: "Draw"
10
1
10
9
Returns: "Draw"
9
9
4
4
Returns: "Draw"
7
2
5
5
Returns: "Draw"
10
5
4
7
Returns: "Draw"
100
1
99
3
Returns: "Strangelet"
10
1
6
2
Returns: "Draw"
5
2
2
5
Returns: "Draw"
4
4
4
3
Returns: "Draw"
10
9
3
10
Returns: "Draw"
10
1
4
2
Returns: "Draw"
10000
400
999
512
Returns: "Strangelet"
10
2
5
8
Returns: "Strangelet"
7
4
7
5
Returns: "Draw"
30
10
4
16
Returns: "Draw"
5
1
4
3
Returns: "Strangelet"
50
25
50
30
Returns: "Draw"
4
2
4
1
Returns: "Draw"
6
6
4
4
Returns: "Strangelet"
10
5
9
9
Returns: "Draw"
5
2
5
3
Returns: "Draw"
8
1
8
3
Returns: "Draw"
10
4
3
5
Returns: "Draw"
5
4
3
3
Returns: "Draw"
100
1
5
2
Returns: "Draw"
8
5
2
3
Returns: "Draw"
875973
636549
837344
810904
Returns: "Draw"
30
1
3
2
Returns: "Draw"
5
5
4
4
Returns: "Draw"
1000
3
97
100
Returns: "Draw"
1000000
500000
500001
500001
Returns: "Draw"
8
1
4
2
Returns: "Draw"
100
99
4
100
Returns: "Draw"
1000
4
3
5
Returns: "Draw"
6
2
5
5
Returns: "Draw"
8
1
8
5
Returns: "Draw"
5
5
5
3
Returns: "Draw"
5
3
5
1
Returns: "Draw"
8
2
4
4
Returns: "Strangelet"
100
5
4
2
Returns: "Romeo"
299999
651
154
541
Returns: "Draw"
5
2
2
3
Returns: "Romeo"
5
2
3
3
Returns: "Draw"
10
5
3
6
Returns: "Draw"
10
2
3
8
Returns: "Draw"
6
3
5
1
Returns: "Draw"
7
2
7
4
Returns: "Draw"
15
5
2
3
Returns: "Draw"
100
10
3
12
Returns: "Romeo"
11
1
9
11
Returns: "Draw"
100
11
5
19
Returns: "Draw"
1000000
123321
500000
954845
Returns: "Draw"
999999
998742
5482
999934
Returns: "Draw"
6
6
4
5
Returns: "Draw"
50000
100
100
201
Returns: "Draw"
5
3
5
5
Returns: "Draw"