Problem Statement
Let P be a set of an even number of distinct points on the plane. A vector matching V of set P is a set of vectors where each vector starts at one point in P and ends at another, and each point in P is either the head or tail of exactly one vector in the matching. Thus, there are half as many vectors in V as there are points in P.
You are given
Definition
- Class:
- VectorMatching
- Method:
- minimumLength
- Parameters:
- int[], int[]
- Returns:
- double
- Method signature:
- double minimumLength(int[] x, int[] y)
- (be sure your method is public)
Notes
- The sum of two vectors (x1, y1) and (x2, y2) is the vector (x1 + x2, y1 + y2).
- A return value with either an absolute or relative error of less than 1.0E-9 is considered correct.
Constraints
- x will contain between 2 and 20 elements, inclusive.
- y will contain the same number of elements as x.
- The number of elements in x will be even.
- Each element of x and y will be between -100000 and 100000, inclusive.
- All points will be distinct.
Examples
{-5, -5, 5, 5}
{-5, 5, 5, -5}
Returns: 0.0
The optimal matching consists of vectors (-5, -5) -> (-5, 5) and (5, 5) -> (5, -5). It contains two opposite vectors, so their vector sum is the zero vector.
{-100000, 100000}
{-100000, 100000}
Returns: 282842.71247461904
{26, 65, 78, 92, -60, -27, 42, -86, 92, -41}
{-76, -83, 38, 22, -42, 85, 46, 98, -47, 38}
Returns: 13.341664064126334
{92383, 42478, 26103, -51063, 72172, -17487, 22179, 80130, 38797, -38546, 24521, -47024, -71456, -20740, 63751, -96441, 71347, 34233, 49104, 58014}
{-18240, -56841, 57506, -22762, -65260, -42804, -34950, 27245, -41611, -69322, 38655, -26671, 54570, 12287, 31971, 15145, 4057, 70458, 56643, -24482}
Returns: 473.68871635283864
{-18240, -56841, 57506, -22762, -65260, -42804, -34950, 27245, -41611, -69322, 38655, -26671, 54570, 12287, 31971, 15145, 4057, 70458, 56643, -24482}
{89861, -33037, -43522, 91944, -83433, -88019, 51084, 74300, 16394, -36766, -94707, 96329, 9616, 50182, 32869, 40898, 10293, 54808, -38266, 96754}
Returns: 814.164602522119
{-79, -95, 36, -80, -22, -64, -37, -88}
{48, 46, -26, -13, -58, -17, 9, 0}
Returns: 18.384776310850235
{-90, 73, 85, -74, 50, -25, 27, 86, -12, 34, 15, 13, 65, -23, -15, 7}
{-55, 27, -62, 15, -21, 72, 72, -12, -28, 81, 71, 93, 91, -7, -70, -46}
Returns: 5.0
{-5, 7, -5, -8, 9, 7, 4, -5, 5, -6, -10, 3}
{-5, 9, 3, -7, 10, -9, 1, 6, 7, -8, 8, 6}
Returns: 1.0
{9240, 4255, -2355, 9827, -9148, -5823}
{7833, -5212, 9506, -5566, 5797, 2434}
Returns: 3384.8397303269767
{56150, -86032, -25267, -89273, -33231, 64697, 33922, -33070, 14974, 22368, 29000, 87924, -17563, 36041}
{91908, -93247, 81856, 78959, 69047, -68306, -73621, 9250, 83458, 24660, 62275, 31825, 92638, 42513}
Returns: 1678.1004141588191
{-7, -9, -4, 0, -1, -4, -9, 6, -2, -7, 10, 7, 2, -1, 4, 3, 2, 7, -9, 0}
{9, -3, 7, 3, 1, -8, 8, -2, 0, -7, -10, 4, -2, -9, 0, -3, 9, 10, -4, -3}
Returns: 0.0
{12, 10, -96, -92, 37, -47, 19, 72}
{56, -66, 85, 64, 82, 55, -22, 50}
Returns: 14.866068747318506
{2993, -33463, 41155, 60955, 98588, -59937, -32194, -40487, 4137, 87953, -78077, 32783}
{68178, -28799, -66420, 30975, -10518, 58859, -46836, 38926, 83717, -51269, 312, 45101}
Returns: 6432.615020347479
{-80, -939, -568, 682, -484, 477, -723, 717}
{243, 908, -98, -547, 310, -469, 358, -246}
Returns: 97.082439194738
{-85, -44, -83, 44, -15, -82}
{-27, 66, -74, -97, 12, -25}
Returns: 99.32774033471213
{-59002, -2493, 76501, 85961}
{-16458, -19157, -71243, 55179}
Returns: 137425.76556817867
{-543, -489, 756, -790, -360, 737, 392, -23, -550, 535, -97, 838}
{-534, -5, 17, -836, -180, 636, -554, 893, 861, -396, 910, 924}
Returns: 132.43866504914644
{1957, 7014, 1504, 1486, -2518, 5823, -5625, 9304, -8284, -1789}
{-9255, 6607, -9023, 7287, -1680, 7846, -453, -681, 1619, -8647}
Returns: 1636.0256721702137
{1, -6, 6, 4}
{3, 5, 2, -3}
Returns: 8.602325267042627
{7898, 3032, -6367, 7539, 3725, -5437, 252, 8326, -720, 7929, 8538, -8427, -3197, 7371, -9091, 8261}
{-1949, 9904, 8337, -3503, 7878, 9061, 1878, -39, -3168, 2248, -9863, 5359, 9474, -9830, -1285, -8454}
Returns: 117.2006825918689
{6, 3, 1, -2, 6, -2}
{-7, 9, 5, 10, 8, -9}
Returns: 2.0
{731, 177, -769, 853, 168, -371, -760, -623, 986, -805, -494, -339, 220, 689}
{253, 726, 434, 192, -982, -315, -742, -308, -156, 942, -508, 885, -715, -458}
Returns: 85.16454661418682
{9, -5, -2, 5, 7, 9, 3, -10, -9, -4, -3, 0, 0, -10, -8, 6, -1, -8, -2, -1}
{1, -9, -3, -2, 9, -3, -9, 3, 1, 10, -5, -2, -8, -3, -10, -9, -1, -3, -2, 4}
Returns: 1.0
{-5, 3, -2, 1, 9, 1, -9, -1, 9, -6, 2, 5, 3, -7, 6, -3, -7, 7, 1, -5}
{-2, 10, -7, 8, -4, 4, 8, 5, 5, -6, -7, 8, 3, 1, -4, 8, 3, -6, -5, -7}
Returns: 1.0
{-806, -142, -459, -718, -115, 625, 531, -566, -694, -134, -774, 362, -96, -828}
{-333, 581, -246, -665, 920, 228, -423, -80, -735, 989, 845, -266, 928, 396}
Returns: 116.24543001770004
{-15939, -55712, 78828, 91332, 93716, -21477, -40401, 81683, 81665, 78217, -8097, 65937, 86184, -8283, 84199, -36048, 8330, -87490, 52747, -36676}
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Returns: 1.0
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
{-13453, 91886, -58970, -37829, -3677, -4830, 15863, -68390, -74756, 32117, -34971, -65174, -39088, -71139, 41638, 73170, -13267, 41977, -70402, -5024}
Returns: 3.0
{-53512, -61847, -44697, -10780, -58742, -22785, 22916, 8310, 46909, 49922, 88047, 43894, -19900, -73023, 93025, 1369, -65373, -54132, -9707, -20863}
{-53512, -61847, -44697, -10780, -58742, -22785, 22916, 8310, 46909, 49922, 88047, 43894, -19900, -73023, 93025, 1369, -65373, -54132, -9707, -20863}
Returns: 7.0710678118654755
{-58486, -8857, 96700, 2758, 43211, -57848, 46962, -17183, -51224, -36875, -80892, -22223, -61441, -24459, 63883, -96813, 46314, -15696, -96500, 48107}
{-89896, -25039, -65200, 35087, 26866, -26040, -43546, 15019, 34228, -97883, 56084, -44014, -93969, 36511, 81310, 46634, 32869, -22506, -76581, 80952}
Returns: 1186.3102460992234
{66485, 96712, 33582, -25249, -56885, 38977, -14634, -43635, 77550, 16952, 42982, 537, -45775, -81003, -83476, 6308, 52818, 59873, -20782, -40955}
{48524, -84862, -29904, -14652, 13387, -99292, 35961, -46682, 49838, 44230, -88053, -59258, -33285, 54797, -13139, 60282, -79507, -25322, -529, -16346}
Returns: 1062.5798793502538
{99751, -94994, 94604, -94490, -94364, 90721, 95501, -96509, -98521, -94542, -98986, 94910, -94110, -94414, -95139, 96144, -96146, 99288, -97912, -96475}
{97962, -94354, 98386, -94921, -97309, 94417, 94853, -91858, -93010, -96969, -90531, 92448, -99266, -96053, -93772, 95557, -94583, 91646, -91392, -90486}
Returns: 244883.3398375643
{66448, 47832}
{-16167, -97922}
Returns: 83847.69216263498
{-67153, 61638, 83156, -81338, 87664, -86743}
{-87731, -95397, 98143, -75073, -97163, -70512}
Returns: 223319.26816331813
{-95282, 97291, -98409, -95847}
{-84122, -84461, -85273, 95923}
Returns: 262791.05073422875
{55981, -68125, 67319, -78778, -71530, -53384, -43069, 83415}
{93364, -94513, -84230, 95153, -94863, -92768, -99107, 97610}
Returns: 196220.38482532848
{32953, 55397, 76891, -88364, 76152, 38963, -51364, 85859, 3203, -27270}
{96146, 88365, 97734, -78542, -98868, 98203, -78518, 89194, -78894, -82127}
Returns: 160340.22186899954
{100,200,300,100,200,300}
{1,1,1,2,2,2}
Returns: 1.0
{26, 65, 78, 92, -60, -27, 42, -86, 92, -41 }
{-76, -83, 38, 22, -42, 85, 46, 98, -47, 38 }
Returns: 13.341664064126334
{-85252, -87668, -19267, 92352, -86910, -12168, -15691, 41732, -54902, -37578, -61776, -16200, 38665, 47136, -48240, 68892, 96494, 58437, -52865, 63202 }
{51389, -77605, 7364, 28239, 29661, -7405, -27597, 30777, -29144, -41364, -52432, -3914, 86539, -20446, -28378, -88578, -56705, 43463, -46145, -35348 }
Returns: 704.7056122949497
{26, 65, 78, 92, -60, -27, 42, -86, 92, -41, 1, 2, 3, 4 }
{-76, -83, 38, 22, -42, 85, 46, 98, -47, 38, 1, 5, -56, 34 }
Returns: 3.1622776601683795
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }
Returns: 0.0
{443, 4235, 42, 6, 2235, 52, 5465, 9999, 9998, -2346, -26, -4235, -426, -4236, 235, 4235, 4236, 423, 654, 32 }
{23, 67, 468, 34, -2, -5, -65, -87, -897, -9998, -2, -54, 54, 7, 9999, 684, 2346, 6589, 9989, 5476 }
Returns: 52.46903848937962
{-1074, 9344, -3397, -7275 }
{9729, -6885, 5695, 4048 }
Returns: 19396.79666852236
{-20000, 30000 }
{50000, 70000 }
Returns: 53851.648071345044
{0, 1, 5, -4 }
{0, 0, 0, 0 }
Returns: 0.0
{41, 467, 334, 500, 169, 724, 478, 358, 962, 464, 705, 145, 281, 827, 961, 491, 995, 942, 827, 436 }
{391, 604, 902, 153, 292, 382, 421, 716, 718, 895, 447, 726, 771, 538, 869, 912, 667, 299, 35, 894 }
Returns: 3.605551275463989