Problem Statement
Everybody loves geometry, so here is a geometry problem. You have a few marbles of possibly different sizes. You are given a
You want to place all marbles onto a straight line that is drawn on the table. Clearly, this makes the problem two-dimensional: we can just view the marbles as circles that will all be touching the line from above. Of course, the marbles cannot overlap, so in our problem no two circles are allowed to overlap. Note that you may place the marbles onto the line in any order, you do not have to preserve the order in which they are given in radius.
Additionally, you want to pack the bottoms of the marbles as close together as possible. More precisely: For each marble consider the point where it touches the line. Compute and return the smallest possible distance between the farthest two of those points. (That is, if you imagine the line as going from the left to the right, your task is to minimize the distance between the leftmost and the rightmost of the points where the circles touch the line.)
Definition
- Class:
- MarblePositioning
- Method:
- totalWidth
- Parameters:
- int[]
- Returns:
- double
- Method signature:
- double totalWidth(int[] radius)
- (be sure your method is public)
Notes
- The returned values must have an absolute or relative error less than 1e-9.
Constraints
- radius will contain between 2 and 8 elements, inclusive.
- Each element of radius will be between 1 and 1000000000 (10^9), inclusive.
Examples
{1, 2}
Returns: 2.8284271247461903
One of the best ways to place the marbles is the following one:
{1,1000000000}
Returns: 63245.553203367585
{7,7,7}
Returns: 28.0
{1,2,3,4,5,6,7,8}
Returns: 50.58155219373389
{1000000000,200000000,300000000,400000000,500000000,600000000,700000000,800000000}
Returns: 6.53173138056799E9
{10, 20, 30}
Returns: 62.92528739883945
{100, 100,11,11,25}
Returns: 200.0
{1000000000,1000000000,1000000000,1000000000,1000000000,1000000000,1000000000,1000000000}
Returns: 1.4E10
{1000000000,1000000000,250000000,1000000000,250000000,1000000000,250000000,99000000}
Returns: 6.0E9
{1,999950884,1}
Returns: 63246.0
{1, 100000000}
Returns: 20000.0
{1,94908557}
Returns: 19484.20457704137
{660005,344393,598163,715234,52464,87578}
Returns: 3157014.540288346
{911673,825708,535941,710852,549483,809046,604659}
Returns: 8022165.982667927
{732606,852428,207585}
Returns: 1621255.145187647
{381165,519721}
Returns: 890167.2988039944
{19611,674161,702765}
Returns: 1376628.8608989716
{147195,982716,939258,68116,52334}
Returns: 1921482.6199869725
{376180,475087,782672,278462,936408,291909,462114}
Returns: 5118635.312564134
{218307,818795,786032,98052}
Returns: 1687785.9403042246
{903214,252429,550970,58607,889016,695517}
Returns: 4430821.778043712
{668666,845064,224027,874690,394297,141381,530656,141738}
Returns: 4926023.100913776
{672956,37121,548896,138004,551719,185703,682747,298898}
Returns: 4161722.740292447
{699999,958267,190583,513298,447484,137280,291316,232286}
Returns: 4532569.191109305
{651330,514779,913115,336660,900413,655728,916170,671158}
Returns: 8924151.169512404
{162071,784129,457990,137767,35139,201263,585064,558197}
Returns: 3670933.065883142
{516745,53297,801112,959401,220075,571141,327418,494234}
Returns: 5548350.130831172
{514413,192326,689044,13515,460874,589670,136175,259540}
Returns: 3847414.8676088667
{894110,554627,619503,100922,367125,59370,940926,873953}
Returns: 6360707.354945734
{322163,459196,628399,411734,379755,611674,586285,728148}
Returns: 6688266.533853211
{307289,477567,10092,651049,280399,335056,944680,591716}
Returns: 5195277.807116896
{401622118,479481651,432779539,422969728,753730372,831790183,956345956,446596892}
Returns: 7.373901090641952E9
{257940314,193804283,28080954,323111452,746668911,801115143,325331971,301950763}
Returns: 3.9969092289770412E9
{185063802,304201708,432762862,737163305,141388679,521789659,767578225,423938433}
Returns: 4.885495980795207E9
{879958222,205740888,279137910,725660632,835761614,656087721,291115281,135266853}
Returns: 5.319102386494895E9
{24069029,627843741,389400354,941605915,28695821,754440438,501214494,294651927}
Returns: 5.003215702425909E9
{808573108,302775648,528765193,999782916,798312987,354151201,352702188,632735577}
Returns: 7.18227862850116E9
{906227351,124657065,994679128,857731976,396270710,998555420,618803501,360806911}
Returns: 7.720539089780999E9
{409972987,149093171,727064056,174544906,911281675,975101241,305698222,89406733}
Returns: 4.510526391646409E9
{435474466,156588523,973875344,395805100,21037622,854786896,386449832,924828031}
Returns: 5.642087141976454E9
{420367537,840457507,705696354,594891945,643497097,97025820,364107167,868772171}
Returns: 6.900940200833332E9
{83005151,957472525,717457809,55146061,205268979,926530186,866058779,316724802}
Returns: 5.365080352452948E9
{882692678,536432200,778376668,456602640,575121377,385565867,413574698,205272217}
Returns: 6.3780904423917885E9
{165690463,96189913,453777666,215483195,813968097,434956971,514404814,499427366}
Returns: 4.421774435098757E9
{62823017,323670170,647962839,530045917,31806911,764215698,632370896,446676061}
Returns: 5.106558894464074E9
{103431124,277249621,646082589,980605889,36533708,825863061,878239723,602692320}
Returns: 6.163862591556757E9
{505693082,447551533,523944842,577504008,382636724,793646419,497392982,343190688}
Returns: 6.626965022831949E9
{150365767,531068349,569778789,58490271,223883778,146535393,564709446,986074595}
Returns: 3.930541025528035E9
{513907719,172908168,129723465,297959468,135403233,897473306,557456238,82638968}
Returns: 3.228472428521619E9
{946935409,296003813,421660197,449961088,585164918,417598792,687880488,946411327}
Returns: 7.181879597017124E9
{902204985,414705410,698910380,699865314,966011557,98384542,780725147,60999703}
Returns: 6.8692058853995285E9
{2395,26850,6630,5447,8653,26000,3635,24269}
Returns: 119329.2316821737
{19996,5152,10227,13747,1,3189,11531,17553}
Returns: 110827.33309213359
{29885,28869,840,8650,1437,524,7979}
Returns: 79104.12923590222
{6327,23712,27299,2549,23843,2345,1,17185}
Returns: 131741.69436835495
{10206,873,19128,11383,4614,12913}
Returns: 77800.1569488481
{21907,9513,13400,25714,1950,26915,8451,26283}
Returns: 191535.06961700282
{8718,1022,22221,22735,12551,28409}
Returns: 126496.68586144518
{12099,8161,25733,23568,8356,4573,2859}
Returns: 100935.16374007435
{8713,19697,1,3517,21513,29693}
Returns: 99539.97485694889
{9206,1,1,18880,3893}
Returns: 29119.539119220797
{207589464,9344249,520021416,553942296,148327041,55456809,980628225}
Returns: 2.6882331194535584E9
{82336476,811736081,22694696,565011900,16063064,282776856}
Returns: 1.757637546517231E9
{65495649,260983025,174344616,118503996,476591561,967395609,435681129,65819769}
Returns: 2.831023135375623E9
{2603996,468158769,337639625,853573656,47264625}
Returns: 1.8688435043133705E9
{173158281,159465384,285744216,432763809,332915516,800889000,853807400}
Returns: 3.8085333350698752E9
{270930600,285710409,498270684,176241,79976249}
Returns: 1.2912829057691617E9
{418242401,663473564,190494204,50750376,319356}
Returns: 1.275548677290183E9
{282239000,587237289,710381409,860834600,871356,815044401,947407400}
Returns: 6.229033415764902E9
{621005400,668686881,186212316,2213144,639684264,76176984}
Returns: 2.6464069513139515E9
{24729729,348717276,248723441,580423464,47540025,95941025,6225}
Returns: 1.369924352005999E9
{20952,220347864,733869808,776150559,219255227,45656,746141643}
Returns: 3.2425115287319627E9
{8261,315820241,215999000,420875,122762473,1294029,385827352,531440000}
Returns: 2.0043870261396475E9
{136589875,523605616,264608288,111979168,291433247}
Returns: 1.607813880684546E9
{3175523,217080801,96070912,825292672,5450776}
Returns: 8.519838456625227E8
{656233909,304820217,846589536,3651264,901427696,88715536}
Returns: 3.433597379975623E9
{70443997,496792088,557440767,2862288,681471000,206424071,145530576,313432}
Returns: 2.486513308192616E9
{224754712,13143256,379502424,7999000,476378541,976190488,89914392}
Returns: 2.3712970161967654E9
{70443997,911673,3913,11088567,633838779}
Returns: 4.226115807516858E8
{1770561,50242409,788888024,3111136,442449728}
Returns: 1.1815977177385838E9
{54438939,403582419,176557481,530441,198154287,197136368,22424768,177503328}
Returns: 1.6562157615584803E9
{1678868,13845076,207359378,9440,116986051,59969089,157352699}
Returns: 6.618964496410105E8
{442050892,2313563,168895064,96060335,88528910,31640290,130561,104498}
Returns: 8.348311239589365E8
{37777,45211416,200533708,607573452,57290189}
Returns: 6.981087514475664E8
{22666667,454372826,671898153,6868,533794057,332151179,25411270,15753598}
Returns: 2.7067609324709935E9
{45212140,146410029,126248151,9150226,68575938,533794727,352276096,116986227}
Returns: 1.5040345570018988E9
{4878920,15753185,65609798,260144743,260143714,352274519,35154002}
Returns: 1.125737056700802E9
{12116514,50787,38142,9834696,200533215}
Returns: 1.1065082969869405E8
{25412309,519885626,312901479,228887026,84935426,442051055,607573148,454371633}
Returns: 3.8376264520758686E9
{15752388,68574856,74804426,246,221533598,614208,62741342,7312270}
Returns: 5.102211623031318E8
{924117,112550252,285610292,22667903,207359077}
Returns: 6.641210475394449E8
{6435791,184527459,6436783,992437313,599}
Returns: 8.55878345525058E8
{5154399,1,17210645,758776,1420281,656356796}
Returns: 2.1256833074842942E8
{4083256,508,459165056,28629558,714923923}
Returns: 1.1458936829218228E9
{380203681,20511753,992436098,184528518,248969}
Returns: 1.3856289794545138E9
{149,459164649,69344267,39134741,184527344,20511708}
Returns: 5.985249181413195E8
{1048840,5153715,20511449,4084205,503285186,371888,100132,312500824}
Returns: 7.931633761892774E8
{1049566,24299220,39134888,380204298,229345911}
Returns: 5.905871691492306E8
{874,777600943,254804958,52521073,229344719,24300527,1,17474}
Returns: 1.3280830351604218E9
{916133487,52522607,161318,503283574,147009296,312499632,550732580}
Returns: 2.9763763108968954E9
{39135296,205963424,164917207,7962452,14349228}
Returns: 3.686022931574722E8
{538278,161906,4084279,4085014,162004}
Returns: 8169292.966935633
{161413,538762,16460,2873,3200663,24299580,4083694,24300198}
Returns: 4.859977799607072E7
{32081,248439,408,17209667,161820,249431,536994,2475592}
Returns: 1.3054365392138219E7
{11881896,1231,1048505,1888988,4093}
Returns: 9873928.159339808
{28629424,4084542,2837,20511708,5152835}
Returns: 5.136444205525604E7
{3199346,1013,536904,371270,32467,20511984,20511570,32100}
Returns: 4.1023553997911006E7
{5153015,370952,1419147,28630047,1419604,20510626,349}
Returns: 4.846525297073861E7
{111,758570,1,24299232,4084772,594,7963148,17231}
Returns: 3.13321459513885E7
{5153729,1888638,14348327,1822,1420597,249821,3200693}
Returns: 2.4710553599868882E7
{3639,7961723,7961843,9765897,538259}
Returns: 3.355913990691258E7
{893871496,268436295,893872698,173,2096574}
Returns: 1.9593783255820036E9
{77514,893872603,278999,10000091,62748784,823393,823728}
Returns: 4.7366409570143586E8
{612220702,118,9999271,824247,1,1544,1,1}
Returns: 1.5648336283590332E8
{1,105414354,1,78347,612219260}
Returns: 5.080814808640757E8
{2097394,823133,268436161,62748814,268436324}
Returns: 5.368724849999752E8
{170859560,824133,4783605,9999182,77799,739,2097288,2096849}
Returns: 8.26669422896461E7
{823935,823289,9999135,612219347,10000781}
Returns: 1.7648204143246377E8
{280373,16153,62748377,410339643,170859189,62749313,410338688,268436372}
Returns: 1.62166501445396E9
{268435154,893871171,62749451,170858818,612219818,410338019}
Returns: 2.7857234322210617E9
{4783692,823220,612220447,16228,105413741,4782715}
Returns: 5.0808049612226695E8
{1,1952613,305,719,261171,1}
Returns: 1428237.9211083846
{10078380,1264,19197,1,134218114,1954087}
Returns: 7.355817169493325E7
{1509,1,40352631,20643,261517,1952425,19691}
Returns: 1.7752237670803644E7
{40352921,850,1097,1952528,387421248}
Returns: 2.5006862269597447E8
{1952709,1,1952278,262328,904,134218135}
Returns: 3.6279737147391826E7
{1953150,387420694,1953335,262126,262798}
Returns: 5.8922509151717834E7
{40353517,1953122,40353458,10077780,261486,387420320,262946}
Returns: 3.3077696209532386E8
{387420238,20279,134217538,262575,1953033,10078561}
Returns: 4.5606398900037724E8
{1953896,1131,10078479,10077001,1952535}
Returns: 2.1653091112507835E7
{1180,40354146,40354225,1,10077278,19253,261832}
Returns: 8.070837099996133E7
{1047946,1048289,1048436,543,1049538,1048630,1049381,575}
Returns: 1.048551998589413E7
{1049019,1047577,1049560,208,1,97,1048110}
Returns: 6289951.797679972
{1,1,1,1048410,992}
Returns: 64498.76649983316
{1,1048846,1048637,1048165,1048995}
Returns: 6291444.772216631
{457,1047646,797,1049095,1,1,447,1049360}
Returns: 4193745.798843899
{836,1,1,1048111,1049456,309,626,1049115}
Returns: 4194792.328458842
{1,1048003,1048741,1048460,1}
Returns: 4193206.8203116325
{1049413,1048202,630,1047712,674,1048051,15}
Returns: 6289140.277294476
{1,598,904,1047712,1047790,1,1}
Returns: 2095501.998548319
{1,1048068,1,1,1048154,1}
Returns: 2096221.9982358739
{1, 999950884, 1 }
Returns: 63246.0
{9123344, 24324455, 9898983, 40000077, 8989898, 92344323, 100000000, 90909898 }
Returns: 4.3484743911406803E8
{1000000000, 1, 1000000000, 2, 3, 4, 5, 6 }
Returns: 2.0E9
{99999999, 1, 2 }
Returns: 28284.271106040545
{100, 100, 11, 11, 25 }
Returns: 200.0
{998, 10074, 1, 1, 345473, 77973, 4273423, 51123423 }
Returns: 2.9561597499927435E7
{1000000000, 1000000000, 1000000000, 1000000000, 1000000000, 1000000000, 10000000, 1 }
Returns: 1.0E10
{1000000000, 1000000000, 1000000000, 1000000000, 1000000000, 1000000000, 1000000000, 1000000000 }
Returns: 1.4E10
{1000000000, 1000000000, 1000000000, 1000000000, 999999999, 999999998, 1000000000, 1000000000 }
Returns: 1.3999999994E10
{50000, 50000, 2 }
Returns: 100000.0
{1000000000, 1, 1000000000 }
Returns: 2.0E9
{1, 2, 1000, 1, 1, 1, 1000 }
Returns: 2000.0
{2435345, 3456544, 645647, 456768, 7895678, 3423454, 456, 644563 }
Returns: 2.142490044057381E7