Problem Statement
Given an arrangement of foxes, let D be the largest height difference between adjacent foxes. For example, suppose that four foxes with heights { 10, 30, 20, 40 } sit around the table in this order. The height differences are |10-30|=20, |30-20|=10, |20-40|=20, and |40-10|=30. (Note that the last fox is also adjacent to the first one, as this is a round table.) Then, the value D is max(20,10,20,30) = 30.
Find an arrangement of the given foxes for which the value D is as small as possible. Return a permutation of foxes that describes your arrangement. I.e., return a
Definition
- Class:
- FoxesOfTheRoundTable
- Method:
- minimalDifference
- Parameters:
- int[]
- Returns:
- int[]
- Method signature:
- int[] minimalDifference(int[] h)
- (be sure your method is public)
Constraints
- h will contain between 3 and 50 elements, inclusive.
- Each element in h will be between 1 and 1,000, inclusive.
Examples
{1,99,50,50}
Returns: {0, 3, 1, 2 }
In the optimal solution the foxes with heights 1 and 99 mustn't be adjacent. Hence, the heights of foxes have to be 1, 50, 99, 50, in this cyclic order, and the optimal value of D is 49. One permutation that produces this order of foxes is 0, 3, 1, 2.
{123,456,789}
Returns: {0, 1, 2 }
Whatever we do, the result will always be 789-123.
{10,30,40,50,60}
Returns: {0, 1, 4, 3, 2 }
The permutation {0, 1, 4, 3, 2 } specifies that the heights of foxes are in the following order: 10, 30, 60, 50, 40.
{1,2,3,4,8,12,13,14 }
Returns: {0, 1, 2, 3, 5, 6, 7, 4 }
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
Returns: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
{923,710,408,75,205,194,73,869,895,522,149,720,946,934,754,65,766,73,300,949,593,8,369,583}
Returns: {21, 6, 3, 5, 18, 2, 23, 1, 14, 7, 0, 12, 19, 13, 8, 16, 11, 20, 9, 22, 4, 10, 17, 15 }
{345,391,624,121,488,28,132,306,744,62,682,688,680,845,276,481,611,30,465,343,325,337,999,813,579,613,292,354,50,386,679,645,106,199,379,650,684,133,84,939,426,732,60,267,439,669,1000,167}
Returns: {5, 28, 9, 32, 6, 47, 43, 26, 20, 19, 27, 29, 40, 18, 4, 16, 2, 35, 30, 10, 11, 8, 13, 22, 46, 39, 23, 41, 36, 12, 45, 31, 25, 24, 15, 44, 1, 34, 0, 21, 7, 14, 33, 37, 3, 38, 42, 17 }
{97,649,523,427,15,109}
Returns: {4, 5, 2, 1, 3, 0 }
{159,439,724,82,906,127,88,308,793,7,506,855,533,754,501,572,716,333,838,892,724,256,146,48,544,262,665,568}
Returns: {9, 3, 5, 0, 25, 17, 14, 12, 27, 26, 2, 13, 18, 19, 4, 11, 8, 20, 16, 15, 24, 10, 1, 7, 21, 22, 6, 23 }
{888,241,64,927,398,342,57,881,528,753,972,2,522,575,109,462,839,259,69,99,87,222,111,243,492,78,680,385,969,125,297,576}
Returns: {11, 2, 25, 19, 22, 21, 23, 30, 27, 15, 12, 13, 26, 16, 0, 28, 10, 3, 7, 9, 31, 8, 24, 4, 5, 17, 1, 29, 14, 20, 18, 6 }
{948,510,1000,158,639,364,274,576,186,311,886,320,812,737}
Returns: {3, 6, 11, 1, 4, 12, 0, 2, 10, 13, 7, 5, 9, 8 }
{492,795,794,190,990,953,684,759,801,742,422,609,395,229,300,760,396,251,285,888,766,893,213,507,956,658,539,59,280,306,597,937,408,516,251,62,177,350,306,911,847,872,563,542}
Returns: {27, 36, 22, 17, 28, 14, 38, 12, 32, 0, 33, 43, 30, 25, 9, 15, 2, 8, 41, 21, 31, 24, 4, 5, 39, 19, 40, 1, 20, 7, 6, 11, 42, 26, 23, 10, 16, 37, 29, 18, 34, 13, 3, 35 }
{490,235,23,887,640,883,528,910,234,482,277,543,65,554,490,155,223,680,395,772,455,696}
Returns: {2, 15, 8, 10, 20, 0, 6, 13, 17, 19, 3, 7, 5, 21, 4, 11, 14, 9, 18, 1, 16, 12 }
{121,581,969,149,552,598,605,561,771,195,588,557,70,530,785,440,919,102,581,480,303,536,698,267,104,278,970,167,328,874,66,15,773,822,265,119,857,512,38,466,41,248,449,594,584,497,919,31,529,943}
Returns: {31, 38, 30, 17, 35, 3, 9, 34, 25, 28, 42, 19, 37, 13, 4, 7, 18, 10, 5, 22, 32, 33, 29, 46, 2, 26, 49, 16, 36, 14, 8, 6, 43, 44, 1, 11, 21, 48, 45, 39, 15, 20, 23, 41, 27, 0, 24, 12, 40, 47 }
{515,692,590,69,598,696,492,892,318,75,200,511,610,422,98,618,742,269,364,260,409,133,794,736,29,22,46,430,63,651,55,129,56,191,979,209,579,603}
Returns: {25, 26, 32, 3, 14, 21, 10, 19, 8, 20, 27, 11, 36, 4, 12, 29, 5, 16, 7, 34, 22, 23, 1, 15, 37, 2, 0, 6, 13, 18, 17, 35, 33, 31, 9, 28, 30, 24 }
{396,416,38,550,936}
Returns: {2, 1, 4, 3, 0 }
{532,208,53,138,546,68,193,357,728,824}
Returns: {2, 3, 1, 0, 8, 9, 4, 7, 6, 5 }
{799,607,144,908,182,302,510,859,741,608,312,344,889,208,754,499,229,32,438,622,242}
Returns: {17, 4, 16, 5, 11, 15, 1, 19, 14, 7, 3, 12, 0, 8, 9, 6, 18, 10, 20, 13, 2 }
{265,424,699,168,999,667,240,609}
Returns: {3, 0, 7, 2, 4, 5, 1, 6 }
{201,577,980,383,163,621,673,458,977,179,934,428,217,98,1000,873,121,564,362,839,903,744,724,923,652,320,480,694}
Returns: {13, 4, 0, 25, 3, 7, 17, 5, 6, 22, 19, 20, 10, 2, 14, 8, 23, 15, 21, 27, 24, 1, 26, 11, 18, 12, 9, 16 }
{32,737,257,146,1,109,356,985,268,61,597,589,18,490,95,947,892,642,529,711,967,123,889,261,106,472,920,258,99,777,384,259,598,712,899,286,751,753}
Returns: {4, 0, 14, 24, 21, 2, 31, 8, 6, 25, 18, 10, 17, 33, 36, 29, 16, 26, 20, 7, 15, 34, 22, 37, 1, 19, 32, 11, 13, 30, 35, 23, 27, 3, 5, 28, 9, 12 }
{80,595,241,166,630,106,387,474}
Returns: {0, 3, 6, 1, 4, 7, 2, 5 }
{544,903,769,83,180,972,189,927,824,7,536,128,170,917,461,888,154,773,971,237,941,393,829,670,961,326,486,868,331,690,955,63,981,494,953,119,220,749,961,812,353,532,593,912,406,9,246,315,571,568}
Returns: {9, 31, 35, 16, 4, 36, 46, 25, 40, 44, 26, 41, 0, 48, 23, 37, 17, 8, 27, 1, 13, 20, 30, 38, 5, 32, 18, 24, 34, 7, 43, 15, 22, 39, 2, 29, 42, 49, 10, 33, 14, 21, 28, 47, 19, 6, 12, 11, 3, 45 }
{447,489,836,82,661,848,836,652,671,780,559,325,72,253,768,218}
Returns: {12, 15, 11, 1, 7, 8, 9, 6, 5, 2, 14, 4, 10, 0, 13, 3 }
{607,925,896}
Returns: {0, 1, 2 }
{198,884,229,928,110,191,521,756,539,155,238,892,980,611,572,404,86,698,72,7,46,641,61,259,222,717,11,699,596,156,375,508,751,850,124,26,396,159,697,267,168,692,866,220,575,806,995,467}
Returns: {19, 35, 22, 16, 34, 29, 40, 0, 24, 10, 39, 36, 47, 6, 14, 28, 21, 38, 27, 32, 45, 42, 11, 12, 46, 3, 1, 33, 7, 25, 17, 41, 13, 44, 8, 31, 15, 30, 23, 2, 43, 5, 37, 9, 4, 18, 20, 26 }
{481,466,373,457,608,805,592,177,972,628,700,645,428,176,990,292,780,804,653,110,329,411,728,387,51,250,607,631,532,744,170,9,160,867,399,613,157,892,256,758,574,606,811,784,210,770}
Returns: {31, 19, 32, 13, 44, 38, 20, 23, 21, 3, 0, 40, 41, 4, 9, 11, 10, 29, 45, 43, 5, 33, 8, 14, 37, 42, 17, 16, 39, 22, 18, 27, 35, 26, 6, 28, 1, 12, 34, 2, 15, 25, 7, 30, 36, 24 }
{685,506,271,856,302,907,465,395,12,977,887,829,711,389,369,977,727,120,850,318,313,544,354,649,189,970,96,74,942,769,326,494,681,965,676,749,58,896}
Returns: {8, 27, 17, 2, 20, 30, 14, 7, 31, 21, 34, 0, 16, 29, 18, 10, 5, 33, 9, 15, 25, 28, 37, 3, 11, 35, 12, 32, 23, 1, 6, 13, 22, 19, 4, 24, 26, 36 }
{45,979,317,280,495,717,306,121,640,324,848,535,890,399,976,384,620,350,248,258}
Returns: {0, 18, 3, 2, 17, 13, 11, 8, 10, 14, 1, 12, 5, 16, 4, 15, 9, 6, 19, 7 }
{623,159,403,716,921,733,412,43,666,550,430,364,111,400,782,579,451,931,173,287,698,545,123,12,141,990,333,233,240,370,564,53,762,156,25,54,94,561,182,50,456,918}
Returns: {23, 7, 31, 36, 22, 33, 18, 27, 19, 11, 13, 6, 16, 21, 37, 15, 8, 3, 32, 41, 17, 25, 4, 14, 5, 20, 0, 30, 9, 40, 10, 2, 29, 26, 28, 38, 1, 24, 12, 35, 39, 34 }
{561,281,890,751,587,751,471,631,334,167,747,357,874,620,145,18,537,676,6,335,81,569,633,144,844,77,842,770,378,186,767,321}
Returns: {18, 25, 23, 9, 1, 8, 11, 6, 0, 4, 7, 17, 3, 30, 26, 12, 2, 24, 27, 5, 10, 22, 13, 21, 16, 28, 19, 31, 29, 14, 20, 15 }
{321,858,629,389,194,159,758,109,867,933,757,806,348,490,413,258,898,396,362,188,754,646,873,942,337,607,736,3,194,961,319,750,343,321,936,227,859,946,50,156,592,223,460,663,877,633,192}
Returns: {27, 7, 5, 46, 28, 35, 30, 33, 32, 18, 17, 42, 40, 2, 21, 26, 20, 6, 1, 8, 44, 9, 23, 29, 37, 34, 16, 22, 36, 11, 10, 31, 43, 45, 25, 13, 14, 3, 12, 24, 0, 15, 41, 4, 19, 39, 38 }
{498,261,590,342,230,114,251,349}
Returns: {5, 6, 3, 0, 2, 7, 1, 4 }
{297,953,733,710,86,481,398,883,862,198,867,28,649,92,772,716,610,841,436}
Returns: {11, 13, 0, 18, 16, 3, 2, 17, 10, 1, 7, 8, 14, 15, 12, 5, 6, 9, 4 }
{437,954,716,420,657,434,879,181}
Returns: {7, 5, 4, 6, 1, 2, 0, 3 }
{14,351,372,992,140,208,7,284,102,468,597,314,25,679,251,500,771,395,273,262,892,183,384,23,692,987,727,815,926,736,527,1}
Returns: {31, 0, 12, 4, 5, 19, 7, 1, 22, 9, 30, 13, 26, 16, 20, 25, 3, 28, 27, 29, 24, 10, 15, 17, 2, 11, 18, 14, 21, 8, 23, 6 }
{613,907,179,490,901}
Returns: {2, 0, 1, 4, 3 }
{633, 675, 555, 98, 853, 461, 399, 808, 544, 567, 91, 991, 681, 155, 374, 904, 606, 119, 346, 126, 154, 153, 11, 598, 899, 817, 728, 795, 335, 21, 172, 967, 47, 727, 416, 251, 539, 815, 411, 82, 381, 501, 424, 414, 656, 798, 317, 261, 916, 662 }
Returns: {22, 32, 10, 17, 21, 13, 35, 46, 18, 40, 38, 34, 5, 36, 2, 23, 0, 49, 12, 26, 45, 37, 4, 15, 31, 11, 48, 24, 25, 7, 27, 33, 1, 44, 16, 9, 8, 41, 42, 43, 6, 14, 28, 47, 30, 20, 19, 3, 39, 29 }
{1, 2, 3, 4, 8, 12, 13, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 92, 100, 108, 116, 124, 132, 140, 148, 156, 164, 22, 30, 38, 46, 54, 62, 70, 78, 86, 92, 100, 108, 116, 124, 132, 140, 148, 156, 164, 172 }
Returns: {0, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 7, 5, 3, 1 }
{11, 15, 29, 31, 4, 15, 4, 74, 21, 22, 14, 25, 23, 11, 61, 53, 12, 23 }
Returns: {4, 0, 16, 1, 8, 12, 11, 3, 14, 7, 15, 2, 17, 9, 5, 10, 13, 6 }
{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, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 }
Returns: {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 49, 47, 45, 43, 41, 39, 37, 35, 33, 31, 29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1 }
{1, 2, 3, 4, 5, 6, 7, 8 }
Returns: {0, 2, 4, 6, 7, 5, 3, 1 }
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }
Returns: {0, 2, 4, 6, 8, 10, 11, 9, 7, 5, 3, 1 }
{10, 20, 25, 5 }
Returns: {3, 1, 2, 0 }
{468, 335, 501, 170, 725, 479, 359, 963, 465, 706, 146, 282, 828, 962, 492, 996, 943, 828, 437, 392, 605, 903, 154, 293, 383, 422, 717, 719, 896, 448, 727, 772, 539, 870, 913, 668, 300, 36, 895, 704, 812, 323, 334, 674 }
Returns: {37, 22, 11, 36, 42, 6, 19, 18, 8, 5, 2, 20, 43, 9, 27, 30, 40, 17, 38, 21, 16, 7, 15, 13, 34, 28, 33, 12, 31, 4, 26, 39, 35, 32, 14, 0, 29, 25, 24, 1, 41, 23, 3, 10 }
{250, 74, 659, 931 }
Returns: {1, 2, 3, 0 }
{137, 601, 235, 30, 1, 261, 62, 530, 625, 273, 401, 570, 614, 187, 476, 366, 658, 245, 148, 14, 177, 675, 452, 388, 219, 433, 644, 318, 693, 206, 335, 90, 582, 559, 106, 494, 722, 47, 418, 707, 354, 300, 118, 543, 513, 75, 160, 289, 376, 464 }
Returns: {4, 3, 6, 31, 42, 18, 20, 29, 2, 5, 47, 27, 40, 48, 10, 25, 49, 35, 7, 33, 32, 12, 26, 21, 39, 36, 28, 16, 8, 1, 11, 43, 44, 14, 22, 38, 23, 15, 30, 41, 9, 17, 24, 13, 46, 0, 34, 45, 37, 19 }
{724, 742, 530, 779, 317, 36, 191 }
Returns: {5, 4, 0, 3, 1, 2, 6 }
{163, 263, 711, 396, 345, 12, 611, 189, 117, 529, 190, 59, 241, 269, 862, 813, 853, 189, 153, 451, 41, 766, 370, 773, 339, 820, 309, 459, 3, 97, 482, 412, 962, 153, 661, 559, 738, 341, 342 }
Returns: {28, 20, 29, 18, 0, 17, 12, 13, 24, 38, 22, 31, 27, 9, 6, 2, 21, 15, 16, 32, 14, 25, 23, 36, 34, 35, 30, 19, 3, 4, 37, 26, 1, 10, 7, 33, 8, 11, 5 }
{289, 224, 387, 659, 225, 573, 489, 761, 678 }
Returns: {1, 0, 6, 3, 7, 8, 5, 2, 4 }
{15, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
Returns: {1, 3, 5, 7, 9, 11, 13, 0, 14, 12, 10, 8, 6, 4, 2 }
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
Returns: {0, 2, 4, 6, 8, 10, 12, 14, 13, 11, 9, 7, 5, 3, 1 }
{990, 597, 749, 536, 760, 658, 274, 777, 114, 894, 447, 487, 827, 859, 296, 299, 12, 169, 440, 845, 592, 647, 307, 613, 202, 495, 63, 789, 994, 338, 527, 731, 667, 253, 51, 107, 204, 916, 416, 432, 353, 243, 911, 331, 605, 452, 685, 548, 606, 834 }
Returns: {16, 26, 8, 24, 41, 6, 15, 43, 40, 39, 10, 11, 30, 47, 1, 48, 21, 32, 31, 4, 27, 49, 13, 42, 0, 28, 37, 9, 19, 12, 7, 2, 46, 5, 23, 44, 20, 3, 25, 45, 18, 38, 29, 22, 14, 33, 36, 17, 35, 34 }
{52, 64, 86, 34 }
Returns: {3, 1, 2, 0 }
{24, 85, 55, 57, 41, 67, 77, 32, 9, 45, 40, 27 }
Returns: {8, 11, 10, 9, 3, 6, 1, 5, 2, 4, 7, 0 }
{2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 4, 2 }
Returns: {0, 1, 2, 4, 6, 8, 9, 7, 5, 3, 10, 11 }