Problem Statement
"Pairing pawns" is a game played on a strip of paper, divided into N cells. The cells are labeled 0 through N-1. Each cell may contain an arbitrary number of pawns.
You are given a
The goal of the game is to bring as many pawns as possible to cell 0.
The only valid move looks as follows:
- Find a pair of pawns that share the same cell X (other than cell 0).
- Remove the pair of pawns from cell X.
- Add a single new pawn into the cell X-1.
You may make as many moves as you wish, in any order.
Return the maximum number of pawns that can be in cell 0 at the end of the game.
Definition
- Class:
- PairingPawns
- Method:
- savedPawnCount
- Parameters:
- int[]
- Returns:
- int
- Method signature:
- int savedPawnCount(int[] start)
- (be sure your method is public)
Notes
- You may assume that the answer will always fit into an int.
- Note that you are only given the int[] start. The number of cells N can be determined as the length of start.
Constraints
- start will contain between 1 and 20 elements, inclusive.
- Each element of start will be between 0 and 1,000,000, inclusive.
Examples
{0,2}
Returns: 1
There are two pawns on cell 1. You can remove them both and place a pawn onto cell 0.
{10,3}
Returns: 11
There are 10 pawns already on cell 0. You can add another one by removing two pawns from cell 1. Note that at the end of the game cell 1 will still contain one pawn that cannot be used anymore.
{0,0,0,8}
Returns: 1
After 7 moves you can get a single pawn to cell 0. The rest of the board will be empty.
{0,1,1,2}
Returns: 1
Again, a single pawn can reach the leftmost cell.
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123456}
Returns: 0
That's a lot of pawns! But they are too far away. In this case it is impossible for a pawn to reach cell 0.
{0,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,8}
Returns: 1
{0,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7}
Returns: 0
{0}
Returns: 0
{47}
Returns: 47
{1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000}
Returns: 1999998
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
Returns: 0
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Returns: 1
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1000000}
Returns: 1
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,524288}
Returns: 1
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,524287}
Returns: 0
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1000000}
Returns: 3
{296172,23166,484266,687650}
Returns: 514777
{326498,573090,43163,237303,308856,936954,287349,333671,380443,816305,136232,641843,537022}
Returns: 712834
{935806,930822,726198,91596,874671,926003,584880,583333,951900,125157,843631,706680,969893}
Returns: 1696885
{628467,764087,996960,189181,290032,661246,371913,786053,69227,748484,934722,481379,226438}
Returns: 1337076
{408610,692840,133581,606047,377552,418390,970948,386835,434282,499504,772163,21519,499425}
Returns: 922604
{104312,205556,385889,515195,524230,805166,698782,462888,867430,910398}
Returns: 445588
{834584,374313,670825}
Returns: 1189446
{90628,745761,174598,344859,199502,691156,750761,643245,374202,20591,178485,274317,625374}
Returns: 603051
{595437,681024,987140,560231,71792,231829}
Returns: 1264494
{619305,859420,298876,481878,962945,304731,366576,963210,619741,615607,410461,592172}
Returns: 1271241
{370011,663212,762762,458496,914591,269474,482930,972100,798919,20788,982460,802120,978784,896382,550700,844141,771965,178721,287008}
Returns: 1035277
{23487,827261,753020,725053,884126,526825,227472,568060,720019,555970,405658,943208,222104}
Returns: 800526
{420184,260533,909871,307463,561129,210216,916947,936018,576308,433888}
Returns: 882729
{472170,503962,680078,46334,586035,384550,894619,358283,931703,379962,537917,352437}
Returns: 970463
{414916,216937,350163,990649,124295,12533,502296}
Returns: 750764
{143544,742937,588822,51132,18569,678930,551704,539019,87963,81057,344078,76651,892682,655345,453020,816349}
Returns: 705043
{665901,483893,823767,244403,13778,997276,926260,581622,554753,781922,570864,707929,66155,681048,28483,513813,115033,386375,769387}
Returns: 1200104
{25703,525269,581823,719566,496756,529524,901339,711643,769279,581100,285451,882139,180353,229155,116604,627613,377505,171870}
Returns: 595931
{669675,560739,91551,446108,669164,399005,607221,213327,927559,173339,327036,288732,332767,280493,381870,104675}
Returns: 1098706
{479733,731593,346458,550679,404094,881478,480409,442523,477508,199819,284563,391653,802012}
Returns: 1067665
{129695,344160,175962,256509,297311,792405,468074,848459,176097}
Returns: 435803
{639871,278691,310078,786778,777235,416673,581410,832767,402632,952157}
Returns: 1035704
{377631,783115,555323,679812,124445,339174,192583,153299,716775}
Returns: 1018379
{846358,465074,919870,265206,710677,736564,181904,293138,847844,413971,821,669847,304173,3882,136508,579580,365473,586875}
Returns: 1419139
{514815,77494,971997,800270,779312,199340,38552,338413,242151,581449,961285,264528,922495,91620}
Returns: 958163
{539824,706411,532646,217935,244537,414565,774413,574258,348731}
Returns: 1099620
{838210,509291,227539,416539,802745,252432,274816,946024,456107,55436,942099,827606,999663,813063,816048}
Returns: 1275159
{803045,626042,801560,491300,6743,367226,184079,747639,232039,789334,321098,302152,543591,41240,535224,304246,223321,421076,129852,128707}
Returns: 1401579
{776229,271206,852186,487211,369999,209936,518235,773140,538277,226707,759121,207552,330575,838177,304929,650151,79921}
Returns: 1233213
{725827,870860,283813}
Returns: 1232210
{171281,194433}
Returns: 268497
{844814,545853,937420,185729,396950,986527,529001,120770,793719,870887,514368}
Returns: 1445462
{111390,593097,152175,781919,886101,249006,455193,597895,731502,390868,54193,620412,642823,386547,133072,715807,91317,451484,461303}
Returns: 622885
{16486,885946,587769}
Returns: 606401
{864829,99999,666570}
Returns: 1081471
{783978,868842,504466,390541,29485,917708,599039,86954,703341,72310,628731,711403,673179,693511,262066,285459}
Returns: 1438017
{509556,210186,817277,768305,812004,208690}
Returns: 972278
{441067,908974,684086,692685,780154,548427,147564,371123,213025}
Returns: 1225096
{47135,797542,30905,540146,100368,310079,150378,684789,643288,162806,458893,191799,969485,110973,496563,984099,647640,234895,449146}
Returns: 548509
{298485,504433,622026}
Returns: 706208
{630763,357931,359398,360280,717663}
Returns: 989466
{293367,60639,60116,60689,61348,60296,60583,60296,60530,121732}
Returns: 353912
{589110,221135,220185,220443,219518,218538,220338,440048}
Returns: 809708
{595544,40478,39855,40020,39560,40156,39302,40343,39549,40060,39546,39513,39969,39687,39561,79962}
Returns: 635715
{660788,96621,96733,95541,95712,97110,96699,95592,97548,95442,96068,95815,193108}
Returns: 757254
{742366,64522,65092,63906,64071,66162,64154,64271,64244,64264,64354,64144,129396}
Returns: 806966
{643107,22729,22706,22638,23083,22442,22828,22803,23365,22318,22939,22447,22817,23406,22292,23127,45794}
Returns: 665836
{625313,97013,97622,98339,97995,97924,97635,98260,97695,195058}
Returns: 722757
{456451,133971,135547,133939,134792,135502,134590,135549,267902}
Returns: 590933
{501761,171672,172733,174315,172861,172146,347016}
Returns: 674175
{486479,125863,125148,124352,125547,126000,123202,250146}
Returns: 611904
{132644,115472,113462,116034,228904}
Returns: 247556
{106540,277819}
Returns: 245449
{641023,234613,235639,234274,235315,235923,234933,470510}
Returns: 875949
{270491,156475,310160}
Returns: 426268
{309181,132916,267757}
Returns: 442578
{63894,2806,2896,3263,2842,2850,2874,2944,3004,3055,3061,2876,2931,2919,2967,3031,2845,3021,5930}
Returns: 66786
{287718,34002,32959,33426,33144,33100,33186,33209,33162,33311,32939,33198,33140,33009,66382}
Returns: 321280
{382391,450678,450366,897750}
Returns: 832540
{403096,39170,38626,38240,39625,37828,38966,38782,38402,38361,38307,38521,38572,38281,77718}
Returns: 441987
{229978,22876,21694,22706,22168,23018,22520,45001}
Returns: 252486
{599167,37834,36853,37349,37749,37780,36458,37612,37408,37390,37117,37389,36563,37410,37067,37400,36981,74782}
Returns: 636661
{616881,49093,49837,50352,50003,49224,50651,49732,49963,50295,49814,50237,49626,49699,99882}
Returns: 666414
{262318,605651}
Returns: 565143
{844456,119182,118188,118044,117017,117107,235358}
Returns: 963000
{788187,122603,123364,122395,123463,122657,123481,123080,121917,124048,123433,124041,122580,246990}
Returns: 911029
{646118,317398,319261,319634,318605,637304}
Returns: 964415
{807428,115142,117032,114721,116532,114501,116178,116546,114439,116121,115611,115756,115490,115199,232074}
Returns: 923084
{734477,95016,95689,94142,94789,94818,191144}
Returns: 829549
{562247,114189,113560,112649,114277,114491,113899,111770,113385,228582}
Returns: 676075
{526893,179756,178057,179368,179269,359150}
Returns: 706134
{645573,242294,240675,243116,242589,483294}
Returns: 887543
{467694,334537,337157,332816,668896}
Returns: 802659
{109688,5736,5369,5702,5333,5972,5538,5743,5359,5627,5423,5506,5688,5729,5388,5518,5586,11220}
Returns: 115305
{362174,85593,83540,84308,84278,84574,85784,84682,169148}
Returns: 446967
{13362,12283,12891,13096,25582}
Returns: 25962
{322388,110268,109760,110708,110177,111237,109559,221366}
Returns: 432604
{48348,25665,25058,51535}
Returns: 73886
{221969,36085,36869,37218,36723,36283,36430,36928,36861,37185,36962,72785}
Returns: 258456
{5676,1011,960,962,1138,935,1051,1015,885,1151,903,958,1106,1916}
Returns: 6674
{632880,106605,106958,106698,107961,106866,106745,107165,105430,108400,213966}
Returns: 739683
{295504,34564,35139,33814,34033,34380,34655,34556,34460,34479,34489,34929,34661,34607,34560,35296,68760}
Returns: 330080
{753955,40118,39273,39795,39665,40132,39822,40428,39275,39606,40391,40139,39463,39386,39858,39895,40569,38296,79764}
Returns: 793787
{221909,20492,21750,20324,20781,21270,20520,20989,20788,20865,21107,20924,20631,20831,20817,20693,20769,20647,20658,41544}
Returns: 242744
{108876,3888,4050,4445,3986,4211,4061,4055,4116,4074,4069,4139,4098,4103,3911,4272,3983,4035,8304}
Returns: 112896
{430234,18752,18351,18448,18654,19080,18444,18390,19025,18450,18298,18220,18811,18883,18832,17710,18488,18309,36487}
Returns: 448844
{72418,919411}
Returns: 532123
{164202,7538,7395,7990,7515,7795,7435,7240,7728,7360,7582,7870,7234,15634}
Returns: 171763
{677913,131801,129722,129161,129954,130959,130634,130476,261063}
Returns: 808683
{578114,133960,133679,133308,132755,267570}
Returns: 711836
{678514,101497,101912,99862,101007,100437,99865,101139,100698,100143,102749,100528,100698,100702,202672}
Returns: 779813
{351016,1000000}
Returns: 851016
{54182,2586,2567,2411,2465,2633,2488,2431,2540,2558,2452,2324,2426,5116}
Returns: 56732
{899687,66754,66493,66411,66987,65762,66490,67793,66094,66822,66779,67020,66534,65763,67600,66583,66170,66618,133452}
Returns: 966318
{51117,12379,12470,12632,12012,12434,12467,24178}
Returns: 63526
{316755,87459,88438,86393,86466,88042,86947,175098}
Returns: 404275
{884302,60715,59575,60135,60240,61322,60478,60358,121100}
Returns: 944641
{746433,61232,61874,60872,60071,61941,60744,61716,60131,60882,62105,61063,60876,61226,62345,61066,60477,61485,60930,122404}
Returns: 807722
{35216,14560,14684,14826,14479,15051,29280}
Returns: 49853
{19753,1128,1060,1174,1040,1147,1076,1100,929,1192,1043,1043,1042,1085,1029,1036,1167,1050,2116}
Returns: 20863
{1000,2000,3000,4000,5000,6000,7000,8000}
Returns: 3921
{0, 1, 1, 2, 32, 11, 21, 1, 0, 99, 87 }
Returns: 3
{1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 }
Returns: 3921
{0, 2 }
Returns: 1
{0, 0, 4 }
Returns: 1
{100 }
Returns: 100
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: 1999938
{0, 0, 0, 8 }
Returns: 1
{0, 2, 0, 0 }
Returns: 1
{1 }
Returns: 1
{1, 1, 2 }
Returns: 2
{10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190 }
Returns: 39