Problem Statement
The points are described by
Definition
- Class:
- PolygonCover
- Method:
- getArea
- Parameters:
- int[], int[]
- Returns:
- double
- Method signature:
- double getArea(int[] x, int[] y)
- (be sure your method is public)
Notes
- The returned value must be accurate to within a relative or absolute value of 1E-9.
- A polygon is convex if its edges only intersect at its vertices with each vertex sharing exactly two edges, and it's possible to complete a walk around the polygon by only making left turns.
- If two polygons with areas A and B overlap, then an area of A+B is contributed to the result.
Constraints
- x and y will each contain between 3 and 15 elements, inclusive.
- x and y will contain the same number of elements.
- Each element of x and y will be between -1000 and 1000, inclusive.
- No three points represented by x and y will lie on a common line.
Examples
{0,10,0,-10}
{-10,0,10,0}
Returns: 200.0
The best way to cover these points is a square that has the four points as vertices.
{-708,-241,-613}
{662,-120,-221}
Returns: 169035.5
{-229,69,15,-70,47,191,-82,140,185,-148,181,109,-77,182,102}
{35,-159,-62,-116,-232,-216,-156,154,-187,143,-57,186,-17,-136,-7}
Returns: 1800.5
{117,36,-55,177,-51,-69,178,19,-106}
{-162,-41,25,-193,-202,-184,212,8,-10}
Returns: 3780.0
{-1,2,-2,0}
{-1,0,2,-1}
Returns: 2.0
The optimal solution here is to use two triangles; one triangle has vertices at points 0, 1, and 3 while the other triangle has vertices at points 0, 2, and 3.
{0,0,-2,2,-1,1}
{1,0,2,2,3,3}
Returns: 2.0
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
{0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105}
Returns: 2.5
{2,0,-2,-1,1}
{0,2,0,-2,-2}
Returns: 5.0
{2,0,-2,-1,1,0}
{0,2,0,-2,-2,1}
Returns: 3.0
{1,-1,1,-1}
{1,1,-1,-1}
Returns: 4.0
{1,-1,1,-1,1000}
{1,1,-1,-1,0}
Returns: 2.0
{-1000,1000,500}
{-1000,-1000,1000}
Returns: 2000000.0
{-1000,1000,1000}
{-1000,-1000,1000}
Returns: 2000000.0
{-1000,1000,500,0}
{-1000,-1000,1000,0}
Returns: 1000000.0
{1,0,-4,0,1,4}
{1,4,0,-4,-1,0}
Returns: 6.0
{-1000,0,1000,1}
{-1000,1,1000,0}
Returns: 1999.5
{-810,9,-984,34,271,385,-243,111,-309}
{392,-267,-430,-938,422,856,-706,942,-631}
Returns: 100565.5
{-139,-648,-575,753,-259,-800}
{-22,-101,567,-271,86,192}
Returns: 57171.5
{-489,866,596,-889,-798,-903,813,672,-428}
{631,-100,952,-592,-125,-551,-964,252,321}
Returns: 80300.5
{-997,-847,93,-295,188,490}
{-754,593,126,478,16,-56}
Returns: 113529.5
{718,821,-235,-87,-894,996}
{841,344,-663,645,-337,265}
Returns: 306102.0
{685,-635,119,-404,-335,135,-105,-948,485,541,-411,-974,779,779}
{727,968,-891,-139,564,570,578,115,-681,625,-345,-888,-925,97}
Returns: 94937.5
{1000,1000,-1000,-1000}
{1000,-1000,1000,-1000}
Returns: 4000000.0
{1000,1000,-1000,-1000,0}
{1000,-1000,1000,-1000,1}
Returns: 2000.0
{-491,892,-47,-663,440,851,823,605,495,368}
{719,-403,914,152,394,487,-453,-689,931,-406}
Returns: 55989.5
{-429,-782,966,-939,-822,-549,592,-971,391,972,357}
{902,785,405,-157,-111,800,810,337,497,782,-717}
Returns: 87618.5
{620,437,-235,-799}
{273,-527,318,754}
Returns: 265494.0
{524,340,314,-67}
{18,351,969,756}
Returns: 83032.5
{364,-711,-848,486,955,-694,-862,-699,-166,373,544,553,192,-393,-967}
{780,38,423,908,620,578,520,-348,-981,42,-405,550,864,-962,576}
Returns: 49419.0
{268,-365,144,776,-651,-824,-202}
{82,916,-927,-648,-987,-642,905}
Returns: 199028.5
{-366,199,476,-534,6,-858}
{-27,-771,4,437,813,130}
Returns: 164285.0
{-621,-192,655}
{881,353,-261}
Returns: 91905.0
{-907,-525,327,-256,-8,118,-84,704,-620,-829,-786}
{475,104,951,280,297,930,968,-502,-468,558,695}
Returns: 58794.0
{967,680,464,944,813}
{950,608,-998,579,-954}
Returns: 126881.0
{966,366,114,-284,-613,-872,196,297,542,-678,-148}
{106,-395,930,-501,-409,-429,536,251,862,-161,636}
Returns: 70997.0
{394,-743,-541,132,340}
{180,-893,-649,718,886}
Returns: 108301.0
{203,264,-209,380}
{-372,-579,282,-198}
Returns: 46321.5
{-115,-768,165,-502,-101,-696,-728}
{-48,799,896,708,-427,-61,-415}
Returns: 108206.0
{-401,456,-163,-294,819,-191,-810}
{-11,549,106,-683,-780,260,-631}
Returns: 30098.0
{-688,-634,-839,686,-131,-355,804,614,810,821,395,-859,-529}
{-817,-702,-756,404,-587,-631,-383,-467,858,-14,-773,335,510}
Returns: 78780.5
{711,315,-1,-761,-884,-424,199,-450,-977,449}
{-56,-573,-859,999,960,298,555,-449,-376,674}
Returns: 78335.5
{360,271,-831,-402,579,-527}
{154,-572,-473,235,749,-888}
Returns: 249653.0
{-21,155,182,-235,-683,518}
{337,616,-982,369,244,-574}
Returns: 253786.5
{-245,149,868,-303,532,67,5,-477,-460,-652,-38,-964,-202,-183,-730}
{114,-446,-722,670,-614,-383,-337,166,-49,-973,21,-449,304,70,-889}
Returns: 19883.5
{-689,-608,519,470,-894,-603,814,546,-269,-603,920,-218,-5,639}
{-287,996,-352,-410,-68,849,128,592,-534,471,-618,766,-753,607}
Returns: 39857.0
{-785,-261,-490,-799,-56,-733}
{-984,-570,298,-408,326,-372}
Returns: 62874.0
{803,-633,-333,-164,667,121,53,-902}
{-515,687,-808,-863,619,573,51,-56}
Returns: 140722.5
{486,-108,42,955,-431,435,340,927,644,147,191}
{-191,-380,-195,43,-936,-31,112,12,465,-457,678}
Returns: 18578.5
{390,239,-967,-314,-36,305,1000,-200,372,724,-549}
{-446,498,456,45,-985,749,497,-912,-676,90,724}
Returns: 77377.0
{104,-94,706,-106,883,-748,-640,818,-826,799,-452}
{-409,249,-334,655,663,-931,281,-536,-11,-269,-306}
Returns: 88655.5
{8,-191,-303,626,-723,680,21,-309,903,-625}
{895,-874,317,657,-944,-593,666,541,407,721}
Returns: 111249.5
{-796,607,723,-582,-996,750}
{911,909,174,665,-233,957}
Returns: 143422.5
{823,-137,-962,-870,893}
{-151,536,405,640,353}
Returns: 248823.0
{379,-894,246,-97,-976,-214,922,376,702,-412,546}
{-552,-23,332,-441,899,77,119,-398,86,818,423}
Returns: 36426.5
{30,132,0}
{460,-462,0}
Returns: 37290.0
{-35,421,55,-247,765,414,310,-923,475,208,-119,-965,225}
{-926,-212,-405,25,-262,253,565,747,121,-146,-27,538,887}
Returns: 65330.0
{-384,-997,-77,567}
{529,-651,-316,-137}
Returns: 325096.5
{-702,-28,740,-315,-20,-37,-2,78,-827,887,-506,900,-398,95}
{852,727,298,326,881,444,-832,149,795,682,155,910,-311,-808}
Returns: 53623.5
{-703,-342,391,458,554,-707,-751,-457,-636,936,894,-355,242}
{452,168,668,-755,-574,-325,75,575,310,-318,-484,124,-925}
Returns: 44553.5
{-926,-477,-575,-384,-363,-489,128}
{630,-335,-1000,627,23,-922,215}
Returns: 145185.5
{917,-772,-946,-603,-132,-331,271,993,-105,-412,-191,239,785}
{-209,353,86,-142,-976,777,245,-416,-165,313,533,235,852}
Returns: 34617.5
{663,-849,-418,695,360,365,265,757,-545,138}
{-902,478,-106,614,316,23,-247,269,-455,662}
Returns: 76776.0
{567,-502,574,-574,755,235,925,73,-817,715}
{844,-645,544,617,267,804,138,-655,406,-349}
Returns: 162945.5
{281,723,246,-809,-327,740,-714,648,-458,790}
{882,-894,-688,-775,357,-876,-78,-279,-930,-709}
Returns: 65345.0
{185,-932,-763,-77,68,610,-54,-479,-730}
{184,-16,-38,-772,308,-96,307,798,-70}
Returns: 16047.5
{-164,-348,-895,-821,823,-598,-653,-864,367,887,-800,519,171,116,585}
{-363,-454,52,-934,-995,-857,-707,131,544,-266,265,706,622,886,904}
Returns: 69872.0
{-165,-662,757,-48,-603,-824}
{-764,987,-22,-13,-449,-69}
Returns: 221912.5
{-768,287,-405}
{-2,674,-124}
Returns: 187049.0
{-769,-470,-754,-723,777,-5,-753,563,-595}
{-403,-328,-197,-942,-357,-352,-398,559,341}
Returns: 17772.5
{978,-104,-226,132,-731,692,-760,327,523,-839,893,425,-985,923,545}
{905,240,-389,-185,936,896,-447,-314,495,99,538,790,-523,135,655}
Returns: 68975.0
{977,-861,-575,-653,-156,22}
{62,-763,-19,736,-962,126}
Returns: 346718.0
{913,184,-729,726,254,83,786,-144,-359,262,690}
{-480,490,786,442,634,-168,570,-947,-83,-760,968}
Returns: 50318.5
{755,-553,459,507,484,240,-629,-673}
{683,-823,314,116,78,-471,157,-912}
Returns: 33737.5
{501,-187,-571,-197,977,937,922,-909,781,391,626,40,-44,898}
{-10,-698,-320,429,928,777,-335,-228,437,-724,-845,-465,-500,-383}
Returns: 31604.0
{57,-944,-920,576,-449}
{-854,301,49,-651,-527}
Returns: 188649.5
{151,82,949,-168,306,-498,-425,-270,69,-40,-437}
{600,306,138,-813,171,804,1,-468,-992,615,-806}
Returns: 60318.5
{-516,-367,-367,-236}
{378,-757,841,-512}
Returns: 197264.0
{-770,-444,604,-939,14,-253,-300,938,327,-812}
{-315,-632,207,-198,162,685,556,-382,951,-208}
Returns: 82198.0
{-581,-78,-869,358,507,444,-750}
{993,-507,15,558,-546,375,64}
Returns: 135412.0
{-740,-816,762,-304,737,601,-164,173,-534,-240,-325,984,-213}
{155,182,-900,-211,456,72,-349,336,-87,-614,2,-269,575}
Returns: 27731.5
{817,871,-30,469}
{-246,-820,-530,710}
Returns: 324821.0
{816,114,-380,-759,-115,-295,-102,662,291,-585}
{-647,622,-160,-370,-453,-352,-535,747,-614,272}
Returns: 78077.5
{657,-181,808,-979,559,-137,41,576,314,-564,290,-50,872,-249,185}
{516,-691,926,862,548,-654,-505,781,195,-484,477,671,-736,635,-455}
Returns: 35133.0
{657,-938,459,-206,-867,-807,-707}
{115,308,-706,-218,-907,577,-40}
Returns: 244823.5
{276,-610,-529,-482,-128,238,-938,467,402,89,-795,545,-586,-152,599}
{-145,-505,787,-527,589,448,-779,233,-723,-296,-508,782,-960,495,-149}
Returns: 35458.0
{-74,-341,991,-453,759,804,159,-895,-311,-785,143,-240}
{908,498,802,232,-168,475,-442,-450,-152,-515,-469,-653}
Returns: 27598.0
{-328,-418,-39}
{216,623,611}
Returns: 76586.5
{-297,-476,468,707,-158,-979,594,-918,197,288,800,879,-329,436}
{-915,438,-865,-388,429,321,-303,969,564,428,352,948,368,-494}
Returns: 30234.5
{-646,551,779,-37,154}
{540,0,-776,-550,-431}
Returns: 182976.5
{-900,473,-695}
{-153,125,-968}
Returns: 587992.5
{942,179,493,598,877,667,575,-67}
{-992,813,118,996,-581,504,222,-537}
Returns: 33367.5
{759,386,-808,-810,217,-893,-73,-268,850,-114,189,-796,-789,-222,252}
{274,-584,829,-256,-891,-10,-485,400,-677,666,-271,-816,-62,-696,356}
Returns: 67599.0
{746,704,879,645,368,-903,413,670,-691,653,877,319,937,-476,-377}
{115,365,-333,-145,-86,-522,911,-664,-21,736,945,-152,383,-10,-481}
Returns: 58992.0
{-192,12,-997,11,-876,-53,-341,178,-6,364,-775,312,868,746,-13}
{-139,288,638,-848,406,174,904,-899,-904,-715,-936,-400,-53,27,-687}
Returns: 40606.5
{291,-535,-992,100,963,644,899,-837,-673,978,-436,-568,662,829,-564}
{-45,871,506,408,-839,967,305,717,193,364,603,70,-730,677,240}
Returns: 63153.0
{-784,919,570,189,358,-659,137,593,662,33,-540,110,13,912,887}
{-394,-103,817,-779,-527,201,-293,-111,847,-559,142,540,151,-674,-391}
Returns: 62032.0
{-700,81,-742,-726,-411,786,-165,623,696,843,705,-138,523,-729,-279}
{-553,-841,3,-998,-297,359,-150,-198,870,-537,400,15,399,-808,272}
Returns: 65308.5
{805,-612,-617,-918,346,-365,-919,131,-178,553,-947,298,897,492,85}
{-807,-475,974,299,196,-946,-157,-433,429,13,77,209,-37,-772,66}
Returns: 44055.5
{266,988,825,-548,-735,181,313,596,-194,68,497,-341,111,-121,621}
{-808,769,182,-929,771,386,-905,590,620,62,-523,955,160,49,567}
Returns: 30792.5
{-274,587,-178,-621,186,726,-900,-498,-210,26,-61,-979,883,823,-843}
{749,455,-167,-155,-655,160,348,56,811,-332,434,-300,799,-687,-933}
Returns: 92243.0
{-770,-105,-53,-813,500,-425,348,-990,917,-263,731,-543,-744,44,-480}
{938,378,361,-859,-163,856,342,-180,371,218,554,-548,363,-651,863}
Returns: 48301.0
{0,-406,-743,-951,-994,-866,-587,-207,207,587,866,994,951,743,406}
{-1000,-913,-669,-309,104,500,809,978,978,809,499,104,-309,-669,-913}
Returns: 175348.0
{-87, -79, -90, -27, 85, 90, -73, -85, -110, 54 }
{-10, -5, 9, 31, 18, -8, -13, 13, -8, -1 }
Returns: 361.0
{-114, -85, -665, -508, 421, -973, -941, 926, 426, 736, 368, -571, 530, 123, 135 }
{383, -223, 793, 386, -351, -638, -310, 763, -460, 172, 211, -433, 782, -138, -933 }
Returns: 83044.5
{-459, -33, -166, 0, -331, 224, -22, -142, 462, -36, 205, -355, -219, 327, 461 }
{-9, 495, 442, 327, -64, -109, 104, 402, -347, -208, -118, -79, 216, 218, 395 }
Returns: 11382.5
{-242, -235, 353, 464, 0, -99, -253, -46, 688, 735, 325, 46, 676, -235, -35 }
{253, 325, 353, -423, 0, -234, 243, 345, 35, 343, 0, 234, 353, -1, 23 }
Returns: 8963.0
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
{0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196 }
Returns: 5.0
{0, 2, 1, 4, 1, 100, 200, 300, 980, -668, -31, -851, 129, -3, 290 }
{1, 1, 0, 0, 5, 100, 300, 350, -100, -793, 997, 407, -149, -163, 971 }
Returns: 455.5
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
{1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225 }
Returns: 5.0
{16, 73, 16, 1, 73, 0, 72, 15, 1, 15, 72, 0, 714, 715, 717 }
{26, 39, 25, 1, 38, 1, 38, 26, 0, 25, 39, 0, 139, 139, 140 }
Returns: 3.5
{18, -123, 15, 156, 109, 120, 541, 678, -59, 1, 8, -1, -2, -1, 0 }
{1, 234, 12, -2, 418, 555, 1000, -5, 5, -1, 2, -1, 4, 3, 0 }
Returns: 626.5
{1, 67, 656, 13, 4, 641, 6, 3, 6, 97, 97, 79, 77, 99, 314 }
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
Returns: 391.0
{123, -345, 235, 654, 121, 566, 878, -45, -145, 689, 862, -235, -236, 847, -345 }
{-145, 689, 862, -235, -236, 847, -345, 123, -345, 235, 654, 121, 566, 878, -45 }
Returns: 20585.5
{473, 307, -893, -686, 116, 398, -700, 576, -447, -551, 868, 779, -931, 515, 934 }
{773, 400, -650, -243, -244, 900, -481, -756, -931, -966, -19, -189, -818, 814, -176 }
Returns: 20403.0
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
{0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 150 }
Returns: 25.0
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
{0, 2, 5, 9, 14, 20, 27, 35, 44, 54, 65, 77, 90, 104, 119 }
Returns: 2.5
{999, 950, 977, 850, -970, 0, 0, 45, -450, 63, 75 }
{0, 2, 4, 770, -60, 5, 100, 77, 50, 74, 75 }
Returns: 1678.0
{1, 50, -50, 0, 0 }
{0, 1, 1, 50, -50 }
Returns: 100.0
{395, 12, 657, 34, 23, 15, -376, -316, -12, 57, -865, 999, -199, 42, 123 }
{15, -396, -36, -12, 57, -865, 999, -999, 42, 123, 345, 12, 657, 34, 23 }
Returns: 11693.0
{215, 81, 36, 99, 821, 714, 505, 44, 513, 801, 900, 412, 150, 180 }
{789, 512, 42, 213, 123, 144, 188, 153, 741, 215, 322, 238, 53, 127 }
Returns: 13131.0
{1, 2, 3, 5, 16, 18, 19, 10, 22, 23, 25, 27, 38, 39, 30 }
{0, 13, 25, 37, 5, 11, 22, 39, 4, 17, 28, 31, 8, 19, 20 }
Returns: 30.5
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
{0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105 }
Returns: 2.5
{5, -12, 338, 15, 1, 512, 42, 99, 15, -138, 12, -856, 38, 11, 994 }
{-99, 771, 177, -412, 41, -612, 0, 223, 177, -99, 577, 510, 36, 166, 87 }
Returns: 14228.0
{-437, -438, 541, 509, 665, -391, 216, -326, -684, -265, 657, -552, -751, -854, 125 }
{452, -680, 875, -930, 262, 500, 647, -429, -388, -111, 981, -933, -314, -101, 546 }
Returns: 13410.5
{-1, 0, 1, -100, 100, 0 }
{-1, 1, -1, 100, 100, -100 }
Returns: 151.5
{-1, -1, 1, 1, -1000, 1000 }
{-1, 1, -1, 1, 0, 0 }
Returns: 2.0
{432, 34, 26, 88, -78, 89, 689, -23, 45, -98, 67, 13, 543, -35 }
{24, 67, -875, 56, -2, -35, 678, 429, 987, 32, 1, -820, -43, 439 }
Returns: 8688.0
{10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
{43, 234, 54, 345, 4, 23, 4, 534, -13, 342, 3, 23, 412, 123, 343 }
Returns: 79.0
{124, 865, 742, 965, 853, 651, 864, 984, 124, -84, -622, -84, -76, -93, -1 }
{-94, -53, -86, -71, -62, 85, 94, 73, 62, 84, 93, 81, 84, 65, 86 }
Returns: 1405.0
{452, 567, 382, 688, 134, 897, 250, 235, 654, 846, 684, 873, 64, 345, 321 }
{557, 324, 807, 364, 123, 457, 937, 682, 479, 186, 238, 174, 169, 652, 687 }
Returns: 6764.5
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
{217, 192, 102, -19, 89, 12, 909, 832, 12, 329, 298, 128, 382, 982, 921 }
Returns: 147.0
{1, 2, 8, 16, 32, 100, 150, 200, 250, 300, 350, 400, 450, 500, 4 }
{2, 23, 34, 56, 101, 123, 205, 507, -103, -19, -1, -15, -500, -45, 203 }
Returns: 6434.0
{-1, 2, -2, 0 }
{-1, 0, 2, -1 }
Returns: 2.0
{4, 1, 0, -4, 0, 1 }
{0, 1, 4, 0, -4, -1 }
Returns: 6.0
{1, 100, 100, 99, 239, 523, 524, 522, -172, -247, -23, -999, 983, 239, 986 }
{0, 0, -100, -99, 566, 566, -566, 565, 345, 234, 75, 99, 964, 234, -985 }
Returns: 838.0
{0, 1, 0, -3, -3, 6 }
{0, 0, -1, 3, -6, -1 }
Returns: 3.0
{436, -437, -32, 0, 1000, -396, 1, 1, -75, -3, -965, 989, -34, -43, 569 }
{1000, -1000, 230, -54, 0, -54, -733, -864, 961, 962, 34, 542, 654, -324, 78 }
Returns: 37167.0
{0, 0, 1 }
{0, 1, 0 }
Returns: 0.5
{0, 1, 4, 9, 16, 24, 345, 212, 577, 923, 135, 555, 567, 587, 234 }
{123, 0, 15, 10, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 14 }
Returns: 373.5
{8, 9, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 6, 7 }
{36, 45, 55, 66, 78, 91, 105, 0, 1, 3, 6, 10, 15, 21, 28 }
Returns: 3.0
{0, 0, 1, 22, 22, 23 }
{0, 1, 1, 2, 3, 3 }
Returns: 1.0