Problem Statement
Definition
- Class:
- FillBox
- Method:
- minCubes
- Parameters:
- int, int, int, int[]
- Returns:
- int
- Method signature:
- int minCubes(int length, int width, int height, int[] cubes)
- (be sure your method is public)
Constraints
- length, width and height will each be between 1 and 10^6, inclusive.
- cubes will contain between 1 and 20 elements, inclusive.
- Each element of cubes will be between 0 and 10^6, inclusive.
Examples
4
4
8
{10,10,10}
Returns: 2
In order to cover the 4x4x8 box we need two 4x4x4 cubes.
4
4
8
{10,10,1}
Returns: 9
Same case as before but we have only one 4x4x4 cube so we will use eight 2x2x2 cubes
10
10
11
{2000}
Returns: 1100
We have only 1x1x1 cubes. We will need 1100 of those cubes to cover the whole box.
10
10
11
{1099}
Returns: -1
We don't have enough 1x1x1 cubes.
37
42
59
{143821,14382,1438,143,14,1}
Returns: 5061
524288
524288
524288
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}
Returns: 1
1
1
1
{0}
Returns: -1
464
464
464
{1000000,1000000,1000000,1000000}
Returns: 195112
524288
524288
524287
{1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000}
Returns: -1
163840
698368
179200
{146071,777733,599818,266038,12509,478351,201640,618984,143988,87783,837107,349651,99683,484992,553337,438088,68198,972282,890781,586124}
Returns: 152390
826368
57344
352256
{300483,12903,885770,893074,783710,83450,145620,356667,677191,627276,513995,926532,444279,237315,785832,411595,106453,89134,746365,281031}
Returns: 31584
372736
786432
245760
{332834,20121,76680,588957,322200,231687,728795,929130,819202,475810,71693,37304,323102,771307,36319,561510,973081,517179,498001,850892}
Returns: 15960
106496
643072
759808
{213209,274503,297801,147439,967620,962303,519679,275682,463091,876840,379622,730730,736467,401244,634502,16937,915244,134688,703446,718121}
Returns: 33264
30208
534016
139264
{26896,258866,167125,249270,49081,1735,695066,236752,566678,645580,44228,650999,387151,998523,107388,596931,191246,808950,468673,317313}
Returns: 593131
524288
819200
851968
{640188,494640,929124,399776,679394,546986,826758,682435,662649,242966,225652,957443,492133,733054,512856,18927,384267,630293,992229,494846}
Returns: 523
475136
292864
229376
{605242,385053,297374,988809,730761,242863,983510,962548,531708,46968,522217,859929,695062,523161,22103,550080,164490,925140,215163,82564}
Returns: 34888
327680
224256
493568
{786516,991129,530463,289500,818570,474342,540249,463889,193206,88031,249552,982900,674263,436114,129260,989520,740925,358246,831787,250853}
Returns: 213203
524288
565248
98304
{153167,305221,502628,367453,778840,358931,709335,736494,9786,522353,791050,936559,619917,594750,320388,594037,795906,876909,179859,40525}
Returns: 1136
581632
720896
524288
{48181,387895,196695,528162,788050,997336,538392,665914,987442,727209,816227,483984,686875,875717,370969,220161,559646,726869,288440,799841}
Returns: 7473
442368
879616
196608
{21503,875324,908533,750502,813631,860977,289238,986025,774422,645483,415078,874278,198020,247570,700543,440825,38147,304770,957750,893849}
Returns: 106188
688128
264192
262144
{784559,756319,446612,981045,328201,727918,55001,858147,512017,591359,321597,454274,555985,516997,289311,168986,113119,672155,891044,836331}
Returns: 43078
524288
294912
667648
{799123,297905,343351,715576,454620,501664,177792,643283,161111,356930,38113,208389,307541,71872,859993,646933,134582,54250,909714,210356}
Returns: 11852
548864
507904
7168
{384539,424702,498337,706388,27569,75072,730529,748431,344800,864185,807585,550941,557110,715488,116527,138492,649617,253613,928290,785792}
Returns: 348936
131072
819200
823296
{176338,320841,954656,235775,540303,647894,244610,452096,4861,266390,412541,523420,178141,8791,65118,557856,395157,466117,221251,177501}
Returns: 6632
325632
624640
417792
{753188,681108,928939,817030,676934,505266,100889,34643,139448,310775,216855,438767,124010,874244,439769,560297,621031,448488,328734,254159}
Returns: 118712
632064
136192
65536
{284736,284218,945770,195660,60777,768182,812838,972252,399860,846543,161220,697147,217447,636066,253895,307723,451856,400442,873975,635246}
Returns: 186746
524288
151552
873472
{291091,950578,162425,423123,534999,989561,638673,474419,517335,435187,596504,530616,818898,333787,624785,826185,769563,242630,423008,438776}
Returns: 109640
253952
622592
327680
{747736,598845,885357,56688,899362,919198,860544,105974,218045,773807,848666,333181,315193,678409,369082,659267,153233,886886,305579,357106}
Returns: 4129
923648
69632
802816
{251070,498168,501701,633651,965335,667053,935932,878691,878076,396008,379692,152483,843197,27994,67978,836083,757323,345721,393387,300896}
Returns: 60956
337920
49152
937984
{487553,0,0,928191,134501,0,0,0,0,0,977350,408348,0,859030,304427,95783,649599,0,0,0}
Returns: 21008
811008
65536
761856
{228805,0,0,472408,0,0,88948,219734,0,667790,0,0,248630,221779,71501,0,0,0,580884,0}
Returns: 10544
333824
135168
516096
{283564,77392,590113,435779,601494,754825,507409,0,0,771800,710923,482364,160524,654170,0,129117,333401,268914,0,203642}
Returns: 32858
163840
915456
540672
{0,0,0,0,31754,638726,554309,0,0,0,0,654027,755529,611469,672973,0,123101,777856,567866,753281}
Returns: 32598
691200
712704
450560
{0,402208,0,976710,0,0,220164,0,0,0,970900,0,215534,414737,165193,0,969752,685995,997302,71936}
Returns: 940973
835584
704512
231424
{496077,275518,0,0,0,0,0,0,188251,0,0,820551,0,992569,360599,697803,482345,248250,0,757278}
Returns: 142599
571392
389120
802816
{156047,0,608750,0,406647,508608,229921,0,0,616768,0,883177,364431,21665,34122,739397,931614,0,821100,0}
Returns: 134582
180224
475136
557056
{449997,0,0,0,0,433913,0,210615,428578,0,678977,727959,295095,0,0,0,0,589704,0,611792}
Returns: 341771
212992
47104
581632
{0,363308,690474,377751,0,0,0,186251,733443,521186,0,54664,357648,485057,0,771610,638674,647146,93752,223471}
Returns: 39724
792064
311296
276480
{0,0,824419,659680,0,0,0,0,0,802024,25116,643220,499028,0,206632,548249,0,644374,40454,52222}
Returns: 917651
573440
577536
200704
{341769,0,0,228353,0,872866,0,0,0,0,0,786700,0,220582,0,0,0,0,981167,973864}
Returns: 329280
720896
102400
319488
{0,937731,65746,117569,0,0,589274,0,322464,957378,947460,0,722795,0,453403,0,382145,591325,542518,0}
Returns: 24420
776192
651264
16384
{23353,0,0,413860,598816,0,328998,763469,0,0,679083,0,983190,700751,583354,0,815777,0,190939,0}
Returns: 23761
405504
685056
649216
{0,0,0,0,708622,0,0,32687,0,303838,509629,891821,0,142139,0,803968,325187,0,0,0}
Returns: 682389
851968
850944
12288
{142636,0,0,516257,0,0,224348,413283,313676,644095,0,0,671675,267387,828868,0,0,0,0,0}
Returns: 293800
689152
708608
69632
{0,348339,0,540032,378625,0,441844,11096,0,403023,0,355015,0,0,633320,0,576251,357456,0,0}
Returns: 631388
564224
968704
65536
{0,845139,633491,0,752538,0,924035,0,0,0,938576,812332,201853,960822,236044,518882,384209,0,123557,0}
Returns: 88562
620544
8192
538112
{861692,240743,0,741789,0,483966,0,49882,317529,611945,306550,466649,498392,664820,572349,630894,0,0,487410,899762}
Returns: 30725
20480
339968
258048
{626265,0,366069,938305,0,0,0,0,0,659054,51607,638650,0,447664,0,0,0,0,45119,353530}
Returns: 49014
854016
122880
474112
{760252,46406,0,0,0,0,53255,876128,0,0,569492,856735,200565,428597,0,0,0,0,0,0}
Returns: 234060
786432
876544
880640
{860914,258588,233332,384780,541663,556208,354609,180352,620573,520368,610110,237308,410484,54898,459691,32989,754567,277294,138003,257917}
Returns: 66896
200192
8434
737280
{969907,558422,672280,411971,201743,391115,804544,122673,332086,224872,250197,430588,781267,504610,933899,81455,585949,704983,633218,218771}
Returns: -1
98048
672512
182528
{315349,636117,574099,68572,615267,669997,834269,897396,460384,243644,43052,636535,903709,962805,668598,478387,126863,446716,508721,350769}
Returns: -1
30038
22016
903872
{127755,128603,444890,177794,853230,321799,830214,980440,623200,654791,731231,904515,519985,249318,867632,61875,533932,491876,790875,895677}
Returns: -1
34736
386560
270592
{439455,744497,639712,890997,322702,608657,545608,735821,489565,891742,377386,938919,354253,947960,652764,802804,279794,983717,888630,335775}
Returns: -1
6528
93376
144816
{701511,716861,680614,515923,442793,147729,428404,413661,75567,334418,473284,277149,998424,106214,417348,952735,439979,440685,103226,6227}
Returns: -1
704512
999424
428032
{852715,213550,485911,245556,560025,136426,434027,776333,654175,149430,753906,270703,584079,956061,920656,70841,958911,330368,335344,735905}
Returns: 171663
39040
120832
88064
{489198,868915,60528,504410,783751,730361,412219,640522,693899,260578,913066,573247,847649,47391,897481,560039,8948,293304,335505,555744}
Returns: 717506
749248
180224
453760
{685799,918865,939325,948946,225160,733753,75092,176140,540137,44406,555864,770332,294901,780664,448040,787021,467071,720938,413042,144685}
Returns: -1
835584
377504
31897
{666356,675530,9303,80278,247527,164222,870575,295891,888711,667278,468939,32806,834446,850694,600510,39930,245161,240337,153703,814651}
Returns: -1
53
51
14
{5417,4054}
Returns: 9464
4
94
65
{2263,2784}
Returns: 4952
54
46
96
{820,5014,3087}
Returns: 8885
93
84
64
{12529,24759,4522}
Returns: 41769
10
7
9
{334,5,16,327}
Returns: 343
8
7
5
{132,21}
Returns: 133
9
8
9
{528,15}
Returns: 543
6
8
8
{15,31,2}
Returns: 41
1
6
4
{6,13,0}
Returns: -1
2
3
3
{2,28,8,34}
Returns: -1
1000000
1000000
1000000
{1000000, 4545, 45643, 3454, 345 }
Returns: -1
657
24366
1235
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
1000000
1000000
1000000
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
1000000
1
1
{1000000 }
Returns: 1000000
66560
526336
270336
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: 140464
1000000
123
2
{1000000, 1000000, 1000000, 1000000, 1000000, 900017, 1000000, 1000000, 1000000, 1000000, 1000000, 100009, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
524288
524288
524288
{1 }
Returns: -1
324793
322543
436544
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
1000000
1000000
1000000
{1099 }
Returns: -1
2048
2048
2048
{1 }
Returns: -1
1000000
1000000
1000000
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
64
64
524288
{1000000 }
Returns: -1
1000000
1000000
1000000
{1000000, 1000000, 1000000, 1000000, 1000000, 800000, 900000, 280000, 0, 0, 0, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
65536
65536
1
{1000000 }
Returns: -1
524287
524287
524287
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
1
1
1
{143821, 14382, 1438, 143, 14, 1 }
Returns: 1
37
42
59
{143821, 14382, 1438, 143, 14, 1 }
Returns: 5061
524289
524288
524288
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
1000000
1000000
1000000
{1000000 }
Returns: -1
99999
99999
99999
{4554, 4, 4, 5, 5, 4545, 5, 4, 5, 4, 544, 4545, 54, 4, 55, 44, 87, 787, 8888 }
Returns: -1
262144
262144
262144
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: 1
100000
100000
100000
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
524288
524288
524288
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
97897
56734
32424
{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }
Returns: -1
823
45
567
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: 583093
99999
99999
99999
{45542, 4, 22222, 5, 5, 4545, 5, 4, 5, 4, 544, 4545, 54, 4, 55, 44, 87, 787, 8888 }
Returns: -1
1
100000
40000
{100000 }
Returns: -1
100000
100000
100000
{1000000 }
Returns: -1
5
5
5
{109, 1 }
Returns: -1
1000000
1000000
1000000
{1000000, 1000000, 1000000, 10, 10, 10 }
Returns: -1
1
65536
65536
{1000000 }
Returns: -1
1
1000000
1
{1000000 }
Returns: 1000000
688128
500736
363520
{999999, 999999, 999999, 999999, 999999, 999999, 999999, 999999, 999999, 500000, 500000, 82000, 5, 4000, 100, 1000, 100, 20, 1, 1 }
Returns: 1342418
63
117
251
{99999, 99999, 99999, 2, 0, 12 }
Returns: 81935
32768
32768
32768
{10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
Returns: -1
10000
2000
1000
{1000000 }
Returns: -1
3
3
3
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: 20
1000000
1
1
{1000000, 1000000, 1000000, 1000000 }
Returns: 1000000
1000000
1000000
1
{1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }
Returns: -1
1000000
1000000
1000000
{1000000, 1000000, 1000000, 1000000 }
Returns: -1
65536
65536
1
{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }
Returns: -1
65536
999999
65536
{1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000 }
Returns: -1
1
1000000
1000000
{1000000 }
Returns: -1
482928
554607
135730
{466583, 980409, 178559, 43021, 959429, 435920, 408967, 989235, 490736, 773889, 247523, 568911, 69401, 91407, 582871, 119965 }
Returns: -1
1000000
3000
1
{0, 0 }
Returns: -1