Problem Statement
You are working for a company that manufactures high-resolution grids of sensors, such as those used in digital cameras. While the probability of any one sensor being defective is low, it is likely that a very large grid of sensors will have a few defects. For consumer products, this is just accepted, and sometimes the artifacts caused by non-functioning sensors can be hidden with filtering in software.
For high-end products, however, your company wishes to provide defect-free sensor grids. They plan to do this by making extremely high-resolution grids, locating the defective sensors, and then finding a (hopefully) large rectangular region within that grid that does not contain any defects.
Given the width and height of the sensor grid, and the locations of all defects, find the rectangular region in the grid with the largest area (width times height) that does not contain any defective sensors. The locations of the defects are given as zero-indexed coordiantes, where (0,0) is the upper-left corner of the sensor grid. Return a
Definition
- Class:
- SensorGrid
- Method:
- largestRectangle
- Parameters:
- int, int, int[], int[]
- Returns:
- int[]
- Method signature:
- int[] largestRectangle(int width, int height, int[] x, int[] y)
- (be sure your method is public)
Notes
- "upper-left" refers to the corner closest to (0,0).
- The width is measured parallel to the x axis, and the height is measured parallel to the y axis.
- The ith point (starting at point 0) is given by (x[i], y[i]).
Constraints
- width will be between 1 and 40000, inclusive.
- height will be between 1 and 40000, inclusive.
- x will contain between 1 and 50 elements, inclusive.
- y will contain the same number of elements as x.
- Each element of x will be between 0 and width-1, inclusive.
- Each element of y will be between 0 and height-1, inclusive.
- There will be no duplicate points.
- There will be at least one functional sensor.
Examples
4
5
{1}
{2}
Returns: { 2, 0, 2, 5 }
2
2
{0}
{0}
Returns: { 1, 0, 1, 2 }
8
4
{ 0, 3, 6}
{2, 3, 1}
Returns: { 1, 0, 5, 3 }
40
59
{ 0, 2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39 }
{ 57, 54, 51, 48, 45, 42, 39, 36, 33, 30, 27, 24, 21, 18, 15, 12, 9, 6, 3, 0 }
Returns: { 0, 0, 21, 30 }
40000
40000
{20000}
{15000}
Returns: { 0, 15001, 40000, 24999 }
9
7
{ 1, 5, 1, 5, 3, 7, 3, 7 }
{ 0, 0, 2, 2, 4, 4, 6, 6 }
Returns: { 2, 0, 3, 4 }
Four 3x4 rectangles fit between the defects, as show in the following figure: Of these, two have the smallest y coordiante (zero), and of those two, the rectangle at position (2,0) has the smallest x coordinate.
6
5
{ 5, 4 }
{ 2, 4 }
Returns: { 0, 0, 5, 4 }
Two rectangles with the same area fit between the defects, as show in the following figure: They both have the same upper-left position, so we return the one with the larger width.
17
16
{ 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15 }
{ 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14 }
Returns: { 8, 0, 3, 16 }
39999
39999
{ 19999 }
{ 19999 }
Returns: { 0, 0, 39999, 19999 }
40000
40000
{ 20000 }
{ 19999 }
Returns: { 0, 0, 20000, 40000 }
40000
39999
{ 19999 }
{ 19999 }
Returns: { 20000, 0, 20000, 39999 }
40000
40000
{ 33333, 7500, 19999, 18750, 11111, 20000, 30000, 9999, 7000, 30000, 15001, 23001, 50, 29850, 15501 }
{ 16777, 29999, 10000, 4999, 33334, 20000, 30001, 20000, 12999, 15000, 24999, 16999, 75, 7599, 20222 }
Returns: { 15002, 20223, 14998, 19777 }
10
10
{ 4, 4, 2, 3, 6 }
{ 1, 2, 9, 0, 2 }
Returns: { 0, 3, 10, 6 }
11
12
{ 5, 4, 2, 4, 6, 9, 7, 3, 3, 8, 6, 6, 0 }
{ 2, 2, 11, 0, 2, 3, 11, 6, 11, 1, 1, 11, 6 }
Returns: { 4, 4, 7, 7 }
15
16
{ 7, 6, 3, 5, 9, 12, 10, 5, 5, 2, 11, 9, 8, 0, 7, 11, 6, 6, 6, 0, 13, 0, 11, 12, 9 }
{ 2, 3, 15, 1, 3, 5, 15, 8, 15, 15, 2, 1, 15, 8, 12, 6, 6, 0, 4, 0, 14, 3, 1, 13, 6 }
Returns: { 1, 0, 4, 15 }
17
18
{ 8, 7, 4, 6, 10, 14, 12, 5, 5, 3, 13, 10, 9, 0, 8, 10, 13, 7, 7, 7, 0, 15, 0, 12, 13, 10, 7, 5, 15, 4, 8, 13, 13, 12, 14, 16, 10, 13, 0, 16, 2, 4, 1, 15, 0, 11, 2, 11, 10, 13 }
{ 3, 3, 17, 1, 4, 5, 17, 9, 17, 17, 2, 1, 17, 9, 14, 2, 7, 7, 0, 5, 0, 16, 3, 1, 15, 7, 13, 1, 15, 16, 0, 11, 9, 8, 13, 14, 15, 12, 17, 6, 5, 3, 12, 3, 7, 2, 16, 17, 0, 4 }
Returns: { 2, 10, 11, 3 }
100
100
{ 49, 41, 25, 36, 62, 86, 70, 34, 34, 19, 78, 60, 54, 2, 47, 62, 76, 43, 42, 41, 2, 89, 2, 73, 82, 86, 64, 46, 31, 91, 26, 51, 76, 77, 81, 71, 83, 97, 64, 81, 3, 97, 16, 28, 8, 90, 2, 65, 15, 64 }
{ 18, 20, 96, 8, 24, 31, 95, 51, 99, 99, 15, 10, 95, 55, 79, 11, 39, 41, 0, 28, 3, 92, 20, 9, 86, 32, 41, 76, 6, 84, 93, 0, 66, 53, 64, 47, 72, 83, 84, 71, 99, 37, 31, 18, 70, 21, 40, 14, 91, 12 }
Returns: { 9, 52, 67, 24 }
100
100
{ 18, 81, 16, 53, 74, 81, 34, 95, 83, 61, 88, 80, 41, 96, 70, 49, 21, 43, 4, 36, 53, 93, 33, 44, 95, 71, 98, 3, 84, 55, 33, 67, 9, 72, 5, 67, 27, 22, 37, 69, 80, 27, 32, 74, 69, 19, 22, 52, 0, 33 }
{ 79, 32, 75, 82, 53, 53, 85, 30, 70, 95, 94, 57, 96, 96, 78, 43, 88, 31, 31, 23, 5, 25, 77, 74, 96, 49, 43, 64, 73, 6, 51, 33, 40, 74, 44, 36, 40, 77, 35, 94, 32, 82, 74, 45, 57, 89, 59, 40, 25, 18 }
Returns: { 37, 7, 56, 24 }
7
7
{ 3, 2, 1, 2, 4, 6, 4, 2, 2, 5, 4, 3, 0, 3, 5, 3, 3, 0, 6, 0, 5, 5, 4, 6, 5, 5, 5, 4, 0, 1, 0, 6, 0, 2, 2, 0, 3, 4, 6, 1, 1, 3, 1, 6, 1, 1, 4, 2 }
{ 1, 1, 6, 0, 1, 2, 6, 3, 6, 1, 0, 6, 3, 5, 2, 2, 0, 0, 6, 1, 0, 6, 2, 5, 4, 3, 5, 5, 6, 2, 4, 1, 2, 2, 5, 5, 4, 3, 4, 1, 0, 3, 4, 0, 3, 5, 4, 4 }
Returns: { 6, 3, 1, 1 }
8
8
{ 3, 2, 2, 4, 6, 5, 2, 1, 6, 4, 4, 0, 3, 6, 3, 3, 3, 0, 7, 0, 5, 6, 5, 7, 6, 6, 5, 0, 7, 1, 2, 0, 7, 0, 5, 2, 2, 0, 5, 3, 6, 5, 1, 4, 2, 1, 7, 1, 1, 4 }
{ 1, 7, 0, 1, 2, 7, 4, 7, 1, 0, 7, 4, 6, 3, 3, 0, 2, 0, 7, 1, 0, 6, 3, 6, 5, 4, 6, 7, 3, 2, 1, 5, 1, 3, 1, 3, 6, 6, 5, 5, 0, 4, 1, 4, 2, 5, 0, 3, 6, 5 }
Returns: { 4, 2, 2, 1 }
17
3
{ 8, 7, 4, 6, 10, 14, 12, 5, 5, 3, 13, 9, 0, 8, 13, 7, 0, 15, 12, 13, 10, 7, 5, 12, 14, 16, 10, 0, 16, 2, 4, 1, 15, 11, 2, 11, 9, 1, 6, 11, 1, 3, 14, 9, 8, 16, 4, 2, 6, 3 }
{ 0, 0, 2, 0, 0, 0, 2, 1, 2, 2, 0, 2, 1, 2, 1, 1, 0, 2, 0, 2, 1, 2, 0, 1, 2, 2, 2, 2, 1, 0, 0, 2, 0, 0, 2, 2, 0, 0, 2, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1 }
Returns: { 15, 1, 1, 1 }
3
17
{ 1, 0, 1, 1, 2, 2, 1, 1, 2, 0, 1, 2, 1, 1, 0, 2, 0, 2, 2, 1, 0, 0, 2, 2, 2, 2, 1, 0, 0, 2, 0, 1, 0, 2, 0, 2, 0, 1, 0, 0, 1, 2, 1, 0, 2, 1, 2, 0, 1, 1 }
{ 3, 16, 1, 4, 5, 16, 8, 16, 2, 9, 13, 6, 7, 0, 0, 15, 3, 1, 14, 6, 1, 15, 11, 9, 8, 12, 14, 5, 12, 3, 6, 2, 8, 4, 7, 7, 14, 11, 11, 2, 9, 13, 15, 13, 0, 12, 10, 4, 10, 5 }
Returns: { 0, 10, 1, 1 }
40000
1
{ 19928, 16635, 10257, 14547, 24906, 34598, 28377, 13871, 13648, 7839, 31575, 24029, 21960, 965, 19199, 24926, 30736, 17391, 17182, 16677, 983, 35724, 1130, 29561, 32940, 34545, 25821, 18524, 12722, 36778, 10432, 20692, 30741, 30935, 32737, 28627, 33243, 38958, 25755, 32538, 1589, 38955, 6716, 11448, 3495, 36070, 26299, 6289, 25795, 12331 }
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
Returns: { 3496, 0, 2793, 1 }
1
40000
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{ 7210, 8084, 38567, 3292, 9848, 12588, 38189, 20666, 39863, 39809, 6233, 4168, 38375, 22157, 31949, 4499, 15939, 16602, 24, 11370, 1303, 36982, 8204, 3972, 34430, 12992, 16463, 30737, 2456, 33649, 37207, 229, 26646, 21467, 25998, 19141, 29101, 33331, 33609, 28703, 39872, 15017, 12717, 7404, 28285, 8545, 16379, 5803, 36734, 5016 }
Returns: { 0, 22158, 1, 3840 }
40000
10
{ 16255, 9878, 3684, 20492, 123, 9767, 29685, 11837, 11066, 6245, 35206, 23054, 24138, 4031, 16448, 4924, 10079, 24200, 23823, 34271, 36899, 9630, 16604, 17973, 25562, 8849, 13991, 11534, 3189, 29460, 31895, 10652, 18047, 18458, 18704, 28543, 17643, 39125, 3485, 32212, 24568, 32837, 26524, 37682, 34305, 18986, 14783, 37165, 5042, 37369 }
{ 0, 1, 0, 5, 2, 8, 6, 5, 5, 3, 5, 6, 2, 5, 6, 1, 1, 9, 8, 1, 8, 2, 3, 0, 5, 9, 0, 9, 7, 8, 6, 6, 2, 2, 0, 8, 2, 5, 0, 6, 3, 2, 4, 6, 2, 2, 0, 4, 4, 8 }
Returns: { 11838, 1, 4610, 9 }
10
40000
{ 2, 9, 0, 0, 8, 1, 1, 8, 0, 2, 0, 0, 9, 1, 5, 8, 4, 6, 6, 7, 8, 1, 7, 1, 2, 1, 5, 1, 1, 0, 8, 6, 5, 4, 8, 2, 9, 7, 3, 8, 9, 2, 7, 3, 3, 6, 5, 3, 3, 8 }
{ 28913, 23391, 10783, 7202, 35244, 2892, 19448, 37649, 7732, 14426, 26028, 34207, 25257, 39203, 10277, 39512, 3027, 36920, 19593, 26947, 16964, 18688, 12264, 1741, 12350, 26656, 32264, 31347, 15406, 18093, 25080, 6967, 35881, 191, 14064, 12171, 9378, 11565, 38108, 9927, 20093, 17395, 3967, 35951, 27768, 37406, 30359, 4143, 37107, 19332 }
Returns: { 3, 10278, 3, 17490 }
40000
40000
{ 19928 }
{ 7210 }
Returns: { 0, 7211, 40000, 32789 }
40000
40000
{ 35584, 8029 }
{ 33464, 39253 }
Returns: { 0, 0, 35584, 39253 }
40000
40000
{ 30416, 37567, 1321 }
{ 21647, 17874, 5337 }
Returns: { 1322, 0, 29094, 40000 }
40000
40000
{ 19928, 16635, 10257, 14547, 24906, 34598, 28377, 13871, 13648, 7839, 31575, 24029, 21960, 965, 19199, 24926, 30736, 17391, 17182, 16677, 983, 35724, 1130, 29561, 32940, 34545, 25821, 18524, 12722, 36778, 10432, 20692, 30741, 30935, 32737, 28627, 33243, 38958, 25755, 32538, 1589, 38955, 6716, 11448, 3495, 36070, 965, 26299, 6289 }
{ 7210, 8084, 38567, 3292, 9848, 12588, 38189, 20666, 39863, 39809, 6233, 4168, 38375, 22157, 31949, 4499, 15939, 16602, 24, 11370, 1303, 36982, 8204, 3972, 34430, 12992, 16463, 30737, 2456, 33649, 37207, 229, 26646, 21467, 25998, 19141, 29101, 33331, 33609, 28703, 39872, 15017, 12717, 7404, 28285, 8545, 16379, 5803, 36734 }
Returns: { 3496, 20667, 27245, 10070 }
40000
40000
{ 20080, 16642, 376, 39202, 5570, 23212, 21695, 7674, 18158, 31714, 1752, 32232, 6080, 10572, 9317, 20776, 18518, 32251, 9353, 10401, 8128, 17141, 33607, 4851, 37656, 25843, 37607, 16519, 14081, 11035, 13388, 11466, 34546, 6217, 11193, 10172, 5379, 21052, 3617, 37247, 28886, 31606, 2078, 20099, 22088, 38712, 28218, 29542, 17477, 18788 }
{ 38014, 15116, 22615, 36403, 24327, 15600, 12394, 8074, 1524, 28219, 10255, 38034, 36759, 22567, 3628, 29756, 15292, 23349, 2804, 25017, 6746, 20179, 36053, 11875, 35634, 4079, 16297, 1922, 14812, 8438, 28808, 18680, 29935, 20690, 39443, 33100, 3672, 687, 24183, 37461, 20306, 32716, 33341, 5603, 14572, 10359, 7531, 5231, 2944, 6822 }
Returns: { 20777, 20307, 10829, 19693 }
40000
40000
{ 14912, 6180, 39903, 19018, 633, 19419, 37696, 29936, 7743, 35353, 8401, 10686, 20643, 11507, 14012, 11612, 25438, 33401, 13000, 6991, 4018, 12499, 7465, 31547, 22240, 22557, 6695, 11517, 15637, 25546, 16458, 28726, 36903, 4469, 27262, 30405, 26484, 12756, 15064, 37966, 931, 8573, 4300, 34729, 3200, 7244, 35852, 5596, 24968, 16134 }
{ 26198, 33737, 31254, 21269, 9174, 24385, 4552, 23144, 27156, 30517, 14293, 5339, 12009, 39794, 29187, 21463, 10670, 21087, 26673, 4695, 31710, 27094, 33352, 13564, 26182, 33650, 6969, 37018, 1379, 33496, 29430, 633, 15611, 10774, 10339, 9921, 2721, 32207, 21862, 22050, 27008, 1937, 18237, 13878, 32373, 39184, 37059, 32080, 23917, 31404 }
Returns: { 4301, 14294, 32602, 6793 }
40000
40000
{ 9744, 35718, 39431, 38834, 35697, 15625, 13698, 12199, 37327, 38991, 15051, 29140, 35207, 12441, 18708, 2448, 32358, 34551, 16648, 3581, 39908, 7858, 21323, 18244, 6825, 19271, 15783, 6515, 17194, 57, 19528, 5985, 39260, 2720, 3332, 10637, 7590, 4460, 26511, 38685, 12977, 25540, 6522, 9360, 24312, 15776, 3486, 21650, 32459, 13480 }
{ 14382, 12358, 39892, 6136, 34021, 33169, 36710, 38215, 12788, 32816, 18331, 12643, 27260, 17022, 14745, 13170, 6047, 18825, 10541, 24373, 16674, 34009, 30650, 15253, 16729, 23220, 37641, 32114, 27947, 18553, 30051, 22585, 1287, 857, 21236, 26742, 1770, 23727, 19541, 6639, 33710, 11157, 3132, 22154, 10174, 28010, 26588, 18928, 4890, 15985 }
Returns: { 21324, 19542, 13883, 20458 }
40000
40000
{ 4576, 25256, 38958, 18650, 30761, 11832, 29699, 34461, 26912, 2630, 21700, 7594, 9770, 13376, 23403, 33284, 39278, 35701, 20295, 171, 35798, 3216, 35180, 4941, 31410, 15984, 24871, 1513, 18750, 14567, 22599, 23244, 1616, 971, 19402, 30870, 28695, 36164, 37959, 39404, 25022, 2507, 8744, 23991, 5424, 24308, 11119, 37703, 39950, 10825 }
{ 2565, 30978, 8531, 31003, 18868, 1954, 28868, 13286, 38420, 35115, 22369, 19948, 2510, 34249, 303, 4877, 1425, 16564, 34410, 4051, 1638, 924, 27948, 16942, 7277, 12791, 28313, 27209, 14514, 3611, 30673, 4537, 26963, 30940, 32132, 3564, 819, 15248, 17220, 31228, 412, 20377, 28028, 30429, 27974, 16835, 16116, 5776, 25863, 567 }
Returns: { 0, 4538, 31410, 8253 }
40000
40000
{ 1, 39999 }
{ 1, 39999 }
Returns: { 2, 0, 39998, 39999 }
3
3
{ 0, 1 }
{ 0, 1 }
Returns: { 2, 0, 1, 3 }
25
1
{ 1, 10, 21 }
{ 0, 0, 0 }
Returns: { 11, 0, 10, 1 }
10000
10000
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }
{ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49 }
Returns: { 26, 0, 9974, 10000 }
40000
40000
{ 0, 1000, 20000, 30000 }
{ 0, 1000, 20000, 30000 }
Returns: { 1001, 0, 38999, 20000 }
40000
40000
{ 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15, 1, 3, 5, 7, 11, 13, 15 }
{ 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14 }
Returns: { 0, 15, 40000, 39985 }
40000
40000
{ 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000, 39400, 39410, 39420, 39430, 39440, 39450, 39460, 39470, 39480, 39490, 39500 }
{ 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000, 39400, 39410, 39420, 39430, 39440, 39450, 39460, 39470, 39480, 39490, 39500 }
Returns: { 19001, 0, 20999, 20000 }
40000
40000
{ 5, 10, 15, 20000 }
{ 5, 10, 15, 20000 }
Returns: { 20001, 0, 19999, 40000 }
40000
40000
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
Returns: { 10, 0, 39990, 40000 }
40000
40000
{ 9383, 10886, 12777, 36915, 27793, 38335, 5386, 492, 36649, 1421, 2362, 10027, 8690, 59, 17763, 33926, 20540, 23426, 9172, 15736, 5211, 35368, 22567, 36429, 25782, 21530, 2862, 25123, 14067, 23135, 33929, 19802, 34022, 3058, 13069, 18167, 1393, 18456, 15011, 38042, 16229, 17373, 4421, 24919, 13784, 18537, 15198, 34324, 38315, 24370 }
{ 6413, 3526, 16091, 28980, 39956, 1873, 6862, 39170, 26996, 17281, 22305, 20925, 37084, 16327, 20336, 6505, 30846, 21729, 21313, 5857, 16124, 33895, 19582, 20545, 18814, 33367, 35434, 30364, 24043, 33750, 11087, 26808, 37276, 27178, 15788, 33584, 25403, 22651, 32754, 12399, 39932, 15060, 29676, 33368, 27739, 10012, 36226, 18586, 28094, 17539 }
Returns: { 25783, 0, 8143, 39956 }
7
3
{ 2, 4, 5 }
{ 0, 0, 2 }
Returns: { 0, 1, 5, 2 }
5
5
{ 0, 1, 2, 3, 4 }
{ 1, 1, 1, 1, 1 }
Returns: { 0, 2, 5, 3 }
2000
1
{ 700, 1200, 100, 600, 1300, 1800 }
{ 0, 0, 0, 0, 0, 0 }
Returns: { 101, 0, 499, 1 }
40000
40000
{ 0, 800, 1600, 2400, 3200, 4000, 4800, 5600, 6400, 7200, 8000, 8800, 9600, 10400, 11200, 12000, 12800, 13600, 14400, 15200, 16000, 16800, 17600, 18400, 19200, 20000, 20800, 21600, 22400, 23200, 24000, 24800, 25600, 26400, 27200, 28000, 28800, 29600, 30400, 31200, 32000, 32800, 33600, 34400, 35200, 36000, 36800, 37600, 38400, 39200 }
{ 0, 800, 1600, 2400, 3200, 4000, 4800, 5600, 6400, 7200, 8000, 8800, 9600, 10400, 11200, 12000, 12800, 13600, 14400, 15200, 16000, 16800, 17600, 18400, 19200, 20000, 20800, 21600, 22400, 23200, 24000, 24800, 25600, 26400, 27200, 28000, 28800, 29600, 30400, 31200, 32000, 32800, 33600, 34400, 35200, 36000, 36800, 37600, 38400, 39200 }
Returns: { 19201, 0, 20799, 20000 }
40000
40000
{ 1000, 2000, 3001, 4003, 5006, 6010, 7015, 8021, 9028, 10036, 11045, 12055, 13066, 14078, 15088, 16096, 17193, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000, 39999, 10, 39980 }
{ 1000, 2000, 3001, 4003, 5006, 6010, 7015, 8021, 9028, 10036, 11045, 12055, 13066, 14078, 15088, 16096, 17193, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000, 39999, 39980, 10 }
Returns: { 20001, 11, 19999, 20989 }