Problem Statement
John is playing a solitaire computer game. There are n cards numbered from 1 to n and m slots numbered form 1 to m from the left to the right. He has to place each card into some slot using the following rules.
Basic rules:
- The first card (card number 1) may be placed in any slot.
- The second card (card number 2) must be placed exactly dist[0] slots to the left or exactly dist[0] slots to the right of the first card.
- Similarly, each card number i (i > 1) must be placed exactly dist[i-2] slots to the left or exactly dist[i-2] slots to the right of the previous card (card number i-1).
- Finally, if the last card (card number n) is exactly dist[n-1] slots to the left or exactly dist[n-1] slots to the right of the first card (card number 1) then John wins the game.
Special cases:
- If an element of dist is equal to 0, then the corresponding card should be placed into the same slot as previous card.
- If an element of dist is equal to -1, then the distance between the corresponding card and the previous card can be arbitrary.
You are given
Definition
- Class:
- TheCards
- Method:
- find
- Parameters:
- int[], int
- Returns:
- int
- Method signature:
- int find(int[] dist, int m)
- (be sure your method is public)
Notes
- More than one card can be placed into a single slot.
- Slots do not wrap. There are no slots to the left of slot number 1 and no slots to the right of slot number m.
Constraints
- dist will contain between 2 and 36 elements, inclusive.
- Each element of dist will be between -1 and 10,000, inclusive.
- m will be between 1 and 1,000,000, inclusive.
Examples
{3, 1, 2, 1, 1}
5
Returns: 8
Several possible solutions are shown below (in order from card 1 to card 5): slot 1, slot 4, slot 5, slot 3, slot 2; slot 1, slot 4, slot 3, slot 1, slot 2; slot 2, slot 5, slot 4, slot 2, slot 1; ...
{4, 7}
47
Returns: 0
There is no way to win for John in this case.
{1, 1, 1, 1}
7
Returns: 32
{5, -1, -1, 4, 0, 2, -1, 8, 1, 2}
11
Returns: 4224
{1, 2, 3, 4, 10}
11
Returns: 2
{1, 2, 3, 4, 10}
100
Returns: 180
{1, 1}
2
Returns: 2
{7, 8, 9, 2, 5, 6}
1
Returns: 0
{3, 3, 6, 7, 9}
77
Returns: 0
{10, 8, 10, -1, 5, -1, 4, 10}
43
Returns: 45296
{1, 7, -1, 1}
73
Returns: 522
{7, 1}
25
Returns: 0
{7, 7}
99
Returns: 184
{1, 3}
86
Returns: 0
{1, 2, 5, 6, 9, 1, 1, 7}
46
Returns: 536
{7, 8, 5, 2, 5, 6, 9}
1
Returns: 0
{6, 1, 7}
45
Returns: 76
{3, 1, 4}
29
Returns: 50
{1, 4, 5, 3, 1, 2, 9, 5, 4}
73
Returns: 1574
{1, 7, 6}
11
Returns: 8
{1, 6, 7}
37
Returns: 60
{7, 7}
99
Returns: 184
{1, 3, 2}
86
Returns: 166
{4, 6, 3, 1, 1, 1, 5, 1, 2}
81
Returns: 2870
{1, 1, 3, 7, 6, 7, 1, 1, 2, 2, 9}
10
Returns: 0
{369, 165, 357, 573, 580, 545, 226, 852, 611, 388, 7, 437, 125, 291}
550814
Returns: 7686714
{241, 797, 731, 329, 849, 689, 58, 521, 451, 101, 990, 10, 9, 651, 497, 884}
517546
Returns: 12365532
{721, 397, 286, 0, -1, 590, 0, -1, 796, 971, 0, 222, 529, 0, -1, 963, 0}
555774
Returns: 1058539909
{396, 385, 685, 181, -1, 111, -1, 277, 0, 213, 191, 0, 481, 253, 0, 89}
295073
Returns: 105632401
{0, 106, 827, 370, 0, 689, 0, 891, -1, 232, 0, 753, -1, 0, 622, -1}
544472
Returns: 855696296
{-1, 401, 133, 0, 69, 889, 733, 105, 568, 1, 0, 239, -1, -1, 961, 717, 0}
767924
Returns: 355698371
{-1, -1, -1, -1, -1, -1, 701, -1, -1, 876, 793}
980017
Returns: 715337336
{719, 971, 751, 806, 897, 119, 513, 37, 619, 915, 157, 241, 116, 629, 373, 770, 265}
113173
Returns: 5313920
{149, 685, 552, 917, 479, 361, 640, 961, 251, 311, 711, 687, 121, 737}
527431
Returns: 5249380
{961, 981, 1, 1, 681, 19, 331, 305, 653, 951, 43, 264, 857, 525, 301, 96}
959130
Returns: 32539238
{3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357}
949322
Returns: 994791496
{2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089}
904665
Returns: 328884479
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
939664
Returns: 950161410
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
957668
Returns: 957668
{7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677, 7677}
954714
Returns: 334526856
{125, 357, 482}
851001
Returns: 1701038
{529, 437, 291, 7, 291, 134, 523, 799, 611, 7291, 852, 434, 873, 227, 545, 573, 165}
749388
Returns: 1484194
{749, 868, 217, 607, 811, 199, 681, 31, 501, 41, 137, 5697, 365, 73, 417}
670529
Returns: 1329664
{529, 381, 286, 665, 222, 501, 613, 397, 6622, 831, 285, 971, 941}
328646
Returns: 644048
{191, 685, 111, 181, 901, 385, 2543, 89}
203213
Returns: 401340
{125, 357, 482}
483
Returns: 2
{529, 437, 291, 7, 291, 134, 523, 799, 611, 7291, 852, 434, 873, 227, 545, 573, 165}
7292
Returns: 2
{749, 868, 217, 607, 811, 199, 681, 31, 501, 41, 137, 5697, 365, 73, 417}
5698
Returns: 2
{529, 381, 286, 665, 222, 501, 613, 397, 6622, 831, 285, 971, 941}
6623
Returns: 2
{191, 685, 111, 181, 901, 385, 2543, 89}
2544
Returns: 2
{3357, 6137, 8369, 1125}
851001
Returns: 1683014
{3513, 4035, 6823, 4677, 4809, 7477}
470546
Returns: 919112
{1269, 6434, 5149, 7134, 5784, 9135, 1605, 2252, 4291, 227, 744, 6873, 7563}
215529
Returns: 389914
{1607, 2137, 6868, 6749, 7831, 9217, 1779, 199, 1041, 6285, 1665, 721, 9400, 4529, 3381, 1438, 6286, 3463, 6365, 4397, 5360, 963, 8222, 1613, 7677, 6417, 8646, 5907, 8796, 4576, 160, 3941, 2501, 8590, 2971}
79501
Returns: 78911590
{0, -1, -1, -1, 9585, 2803, -1, 5310, -1, 0, 0, 0, 9576, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, 8239, 5045, 0, -1, -1, -1, 7345, 3793, 748}
202255
Returns: 840445180
{0, -1, 0, 0, 9267, 4070, 0, -1, -1, 7489, 0, 2657, -1, 8270, -1, 8793, 0, 0, 1553, 8885, -1, -1, 0, 6636}
342369
Returns: 1014654133
{0, -1, 0, 3977, -1, 0, -1, 9126, 0, -1, 2068, 0, 0, -1, 6241, 0, -1, 7851, -1, -1, 4951, 91, -1, -1, 3991, -1, -1, 0, 2505}
459343
Returns: 412167181
{0, 5644, -1, 0, 0, 0, 2653, 5331, -1, 0, 0, 2857, 7001, -1}
760961
Returns: 601061465
{1445, 1701, 3961, 5309, 2713, 2376, 2561, 3941, 6799, 1818, 7482, 876, 1147, 7463, 9781, 7725, 5433, 5961, 6281, 6358, 641, 2401, 3725, 3556}
97499
Returns: 38465008
{5692, 4310, 5500, 9457, 2575}
777783
Returns: 1536652
{3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357}
851001
Returns: 609710962
{5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110}
808143
Returns: 5809253
{6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365}
701607
Returns: 745787990
{3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134, 3134}
581441
Returns: 790471105
{1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901}
734385
Returns: 1114041874
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
1000000
Returns: 864635911
{9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576, 9576}
170279
Returns: 141024526
{3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251, 3251}
993853
Returns: 1083453063
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
1000000
Returns: 1000000
{3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443}
516422
Returns: 1079906838
{291, 157, 373, 188, 334, 323, 237, 52, 335, 34, 291, 69, 344, 261, 363, 11, 5, 381, 184, 26, 207, 227, 6879, 165, 129, 325, 345, 369, 329, 73, 199, 252}
851001
Returns: 1688244
{185, 91, 151, 11, 33, 382, 381, 334, 241, 33, 395, 107, 181, 339, 186, 201, 3548, 86, 211}
942654
Returns: 1878212
{201, 333, 265, 83, 251, 103, 386, 77, 5, 383, 382, 4386, 265, 277, 321, 177, 351, 309, 217}
472343
Returns: 935914
{49, 193, 105, 1, 331, 78, 297, 11, 297, 247, 144, 51, 10, 5613, 7, 176, 72, 396, 190, 9, 157, 23, 289, 41, 266, 310, 106, 129, 253, 1, 383, 249, 41, 237, 119, 345}
482891
Returns: 954556
{73, 17, 5187, 97, 170, 306, 171, 36, 219, 119, 31, 29, 197, 251, 119, 379, 141, 351, 29, 41, 189, 373, 225, 353, 65, 6, 316, 315, 237, 313, 19}
476636
Returns: 942898
{77, 281, 195, 376, 317, 351, 1, 263, 301, 293, 85, 266, 356, 253, 353, 171, 7051, 289, 121, 1, 156, 361, 145, 161, 87, 33, 265, 361, 55, 351, 153, 297, 276}
218042
Returns: 421982
{356, 117, 83, 125, 301, 1, 281, 97, 101, 356, 51, 32, 1, 81, 3017, 313, 183, 145, 69, 61, 263}
76799
Returns: 147564
{71, 351, 309, 17, 121, 63, 34, 9, 5, 380, 301, 273, 26, 81, 334, 377, 159, 301, 382, 116, 137, 276, 295, 48, 317, 286, 67, 76, 285, 5586, 89}
566657
Returns: 1122142
{63, 79, 148, 261, 151, 89, 126, 245, 177, 311, 46, 278, 297, 65, 225, 129, 48, 361, 148, 90, 324, 161, 361, 213, 269, 4941, 125, 151}
955201
Returns: 1900520
{221, 264, 22, 1, 337, 3084, 185, 49, 391, 88, 170, 229, 134, 333, 291, 161, 11, 61, 136}
463745
Returns: 921322
{291, 157, 373, 188, 334, 323, 237, 52, 335, 34, 291, 69, 344, 261, 363, 11, 5, 381, 184, 26, 207, 227, 6879, 165, 129, 325, 345, 369, 329, 73, 199, 252}
6880
Returns: 2
{185, 91, 151, 11, 33, 382, 381, 334, 241, 33, 395, 107, 181, 339, 186, 201, 3548, 86, 211}
3549
Returns: 2
{201, 333, 265, 83, 251, 103, 386, 77, 5, 383, 382, 4386, 265, 277, 321, 177, 351, 309, 217}
4387
Returns: 2
{49, 193, 105, 1, 331, 78, 297, 11, 297, 247, 144, 51, 10, 5613, 7, 176, 72, 396, 190, 9, 157, 23, 289, 41, 266, 310, 106, 129, 253, 1, 383, 249, 41, 237, 119, 345}
5614
Returns: 2
{73, 17, 5187, 97, 170, 306, 171, 36, 219, 119, 31, 29, 197, 251, 119, 379, 141, 351, 29, 41, 189, 373, 225, 353, 65, 6, 316, 315, 237, 313, 19}
5188
Returns: 2
{77, 281, 195, 376, 317, 351, 1, 263, 301, 293, 85, 266, 356, 253, 353, 171, 7051, 289, 121, 1, 156, 361, 145, 161, 87, 33, 265, 361, 55, 351, 153, 297, 276}
7052
Returns: 2
{356, 117, 83, 125, 301, 1, 281, 97, 101, 356, 51, 32, 1, 81, 3017, 313, 183, 145, 69, 61, 263}
3018
Returns: 2
{71, 351, 309, 17, 121, 63, 34, 9, 5, 380, 301, 273, 26, 81, 334, 377, 159, 301, 382, 116, 137, 276, 295, 48, 317, 286, 67, 76, 285, 5586, 89}
5587
Returns: 2
{63, 79, 148, 261, 151, 89, 126, 245, 177, 311, 46, 278, 297, 65, 225, 129, 48, 361, 148, 90, 324, 161, 361, 213, 269, 4941, 125, 151}
4942
Returns: 2
{221, 264, 22, 1, 337, 3084, 185, 49, 391, 88, 170, 229, 134, 333, 291, 161, 11, 61, 136}
3085
Returns: 2
{1437, 9388, 7226, 2031, 6873, 8165, 227, 9135, 9573, 6434, 1605, 5529, 1125, 9611, 1269, 2252, 5681, 7563, 4291, 3981, 7007, 7799, 529, 5784, 8369, 5545, 6291, 9061, 744, 1283, 1073, 3811, 1523, 852, 3357, 7134}
1000000
Returns: 678726434
{1112, 3956, 2137, 2151, -1, 1201, 5582, 7933, 7385, 3936, 903, 1441, 7781, 6010, 1391, 2343, 7921, 3551, 5851, 1017, 9691, 6833, 8795, 9338, 9982, 2201, 8519, 7011, 2005, 1277, 4677, 3134, 5683, 6665, 8386, 6309}
1000000
Returns: 782346801
{3105, 9608, 8239, 7989, 5623, 1399, 2803, 4733, 7889, 2023, 4961, 9680, 2876, 6171, 9585, 2390, 9097, 9601, 831, 2369, 1681, 3625, 3401, 1871, 943, 7489, 2866, 6001, 5721, 4717, 6069, 8239, 414, 9133, 5045, 7979}
1000000
Returns: 777582056
{6167, 7697, 9126, 4225, 7851, 3991, 8469, 4951, 2068, 2407, 2311, 7677, 5677, 9822, 3483, 8517, 2639, 1697, 5786, 8337, 7715, 2505, 8429, 320, -1, 0, 0, -1, 1448, 9343, 6847, 676, 2983, 1136, 1129, 91}
1000000
Returns: 57854999
{6353, 1404, 3551, 641, 717, 7482, 5361, 7089, 6681, 376, 6358, 3753, 6887, 876, 1818, 3156, 3601, 9745, 7499, 7633, 571, 9781, 877, 1853, 2713, 4595, 7161, 6751, 5433, 5309, 3961, 55, 1561, 7725, 8885, 2376}
1000000
Returns: 385529514
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
1000000
Returns: 422248963
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
2
Returns: 2
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
1
Returns: 0
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
7
Returns: 541198094
{16, 14, 18, 17, 11, 13, 10, 1, 4, 24, 31, 27, 23, 21, 22, 3, 25, 36, 19, 34, 29, 35, 5, 26, 30, 32, 8, 7, 15, 33, 12, 2, 6, 28, 9, 20}
100
Returns: 429221060
{25,24,46,86,64,64,77,17,98,48,42,73,26,49,80,53,61,9,98,7,100,75,84,83,44,27,97,47,54,16,21,83,80,92,81,97}
1000000
Returns: 1133902184
{68,35,75,68,62,12,54,42,75,56,29,38,66,53,68,79,18,45,45,39,74,15,44,32,36,47,35,12,58,64,53,53,79,32,10,25}
1000000
Returns: 5165199
{59,14,88,46,16,66,63,47,56,103,77,104,97,74,60,37,17,43,64,44,97,105,71,24,84,47,80,114,112,33,104,101,112,98,88,23}
1000000
Returns: 242997179
{50,11,6,27,39,68,21,20,72,30,31,49,21,8,48,50,12,6,7,4,51,56,8,25,66,42,52,13,52,68,6,39,66,55,72,55}
1000000
Returns: 411723968
{9961,9997,9899,9915,9902,9959,9930,9962,9957,9933,9970,9984,9925,9948,9996,9977,9896,9924,9902,9989,9900,9970,9903,9925,9963,9932,9923,9953,9919,9995,9998,9910,9942,9900,9986,9923}
1000000
Returns: 857756246
{24,108,35,75,83,14,76,80,86,67,55,89,38,87,20,13,119,83,31,21,105,118,88,112,8,15,65,66,76,20,51,90,41,53,29,47}
1000000
Returns: 345153375
{43,55,52,35,39,50,46,48,49,51,31,42,36,53,50,40,32,56,41,37,54,35,51,30,49,39,35,52,39,33,44,36,30,40,47,46}
1000000
Returns: 1174698316
{28,16,49,6,43,37,42,38,27,29,43,49,7,23,41,15,52,18,30,34,51,42,9,28,30,50,46,41,26,47,43,38,3,51,11,45}
1000000
Returns: 515311615
{22,14,28,19,15,7,24,39,30,30,51,34,52,24,7,11,16,25,6,31,15,26,13,49,9,29,27,39,18,30,19,17,7,28,18,11}
1000000
Returns: 950405474
{47,49,9,34,24,42,14,53,39,34,49,44,20,13,51,25,45,37,21,20,31,29,42,51,17,19,52,50,41,50,11,32,18,17,28,22}
1000000
Returns: 625759223
{1,2,2,1,2,0,0,2,0}
59
Returns: 660
{2,2,2,3,1,0,3,1}
81
Returns: 1208
{0,5,5,4,4}
10
Returns: 12
{0,0,1,1,1,1}
42
Returns: 242
{0,2,3,0,1}
9
Returns: 12
{3454, 3451, 2454, 4554, 3754, 9964, 9934, 9933, 1, 9934, 0, 3454, 3454, 3454, 2358, 123, 548, 8957, 1237, 1271, 7311, 3984, 1237, 3456, 3423, 1235, 3426, 1234, 6756, 3485, 1231, 0, 0, 1237, 3425, 1238 }
1000000
Returns: 0