Problem Statement
John and Brus just built some towers using toy bricks. They now have n towers numbered 0 through n-1. For each i, the height of the i-th tower (0-based index) is given in heights[i].
John and Brus want to arrange their towers into a line. That is, the bottoms of the towers will all stand on the same line. John and Brus don't like it when a tower falls down and knocks over another tower while falling. To avoid this, they have to put their towers sufficiently far apart. More precisely, the distance between any two neighboring towers must be at least equal to the maximum of their heights. John and Brus would like to minimize the distance between the first and the last tower in the line.
You are given the
Definition
- Class:
- TheBrickTowerMediumDivTwo
- Method:
- find
- Parameters:
- int[]
- Returns:
- int[]
- Method signature:
- int[] find(int[] heights)
- (be sure your method is public)
Notes
- A int[] A is lexicographically smaller than a int[] B if it contains a smaller element at the first position where these int[]s differ.
Constraints
- heights will contain between 1 and 7 elements, inclusive.
- Each element of heights will be between 1 and 47 inclusive.
Examples
{4, 7, 5}
Returns: {0, 2, 1 }
There are six possible orderings, but only four of them have optimal distance 12 between the first and the last towers: {0, 2, 1} {1, 0, 2} {1, 2, 0} {2, 0, 1} Among these orderings {0, 2, 1} is the lexicographically smallest one.
{4, 4, 4, 4, 4, 4, 4}
Returns: {0, 1, 2, 3, 4, 5, 6 }
Towers may have equal heights.
{2, 3, 3, 2}
Returns: {0, 3, 1, 2 }
Towers of height 2 have to be neighboring in the optimal ordering.
{13, 32, 38, 25, 43, 47, 6}
Returns: {0, 6, 3, 1, 2, 4, 5 }
{5, 3, 4, 7, 1, 2, 6}
Returns: {0, 1, 4, 5, 2, 6, 3 }
{3, 4, 6, 7, 1, 2, 5}
Returns: {0, 4, 5, 1, 6, 2, 3 }
{7, 6, 5, 2, 4, 3, 1}
Returns: {0, 1, 2, 3, 6, 5, 4 }
{3, 13, 28, 32, 24, 18, 23}
Returns: {0, 1, 5, 6, 4, 2, 3 }
{30, 19, 8, 13, 25, 1}
Returns: {0, 1, 2, 5, 3, 4 }
{4, 23, 38, 20}
Returns: {0, 3, 1, 2 }
{30}
Returns: {0 }
{10, 16, 47, 8}
Returns: {0, 3, 1, 2 }
{13, 32, 38, 25, 43, 47, 6}
Returns: {0, 6, 3, 1, 2, 4, 5 }
{21, 10, 43, 43, 37, 30}
Returns: {0, 1, 5, 4, 2, 3 }
{19, 37, 37, 33, 42, 36, 27}
Returns: {0, 6, 3, 5, 1, 2, 4 }
{10, 10, 46, 4}
Returns: {0, 1, 3, 2 }
{44, 6}
Returns: {0, 1 }
{44, 20, 19, 37, 14, 31, 29}
Returns: {0, 1, 2, 4, 6, 5, 3 }
{1, 2, 3, 4, 5, 6, 7}
Returns: {0, 1, 2, 3, 4, 5, 6 }
{7, 6, 5, 4, 3, 2, 1}
Returns: {0, 1, 2, 3, 4, 5, 6 }
{3, 13, 28, 32, 24, 18, 23}
Returns: {0, 1, 5, 6, 4, 2, 3 }
{25, 30, 8, 32, 13, 1, 19}
Returns: {0, 2, 5, 4, 6, 1, 3 }
{16, 35, 35, 22, 29, 10, 24}
Returns: {0, 5, 3, 6, 4, 1, 2 }
{45, 17, 33, 41, 17, 12, 17}
Returns: {0, 1, 4, 5, 6, 2, 3 }
{40, 29, 31, 24, 13, 12, 3}
Returns: {0, 1, 3, 4, 5, 6, 2 }
{40, 12, 22, 15, 21, 22, 17}
Returns: {0, 1, 3, 6, 4, 2, 5 }
{31, 25, 34, 40, 38, 28, 37}
Returns: {0, 1, 5, 2, 6, 4, 3 }
{30, 27, 34, 25, 32, 11, 13}
Returns: {0, 1, 3, 5, 6, 4, 2 }
{27, 25, 16, 36, 11, 46, 15}
Returns: {0, 1, 2, 4, 6, 3, 5 }
{16, 37, 3, 21, 16, 44, 18}
Returns: {0, 2, 4, 6, 3, 1, 5 }
{47, 47, 47, 47, 47, 47, 47}
Returns: {0, 1, 2, 3, 4, 5, 6 }
{46, 44, 44, 46, 46, 45, 47}
Returns: {0, 1, 2, 5, 3, 4, 6 }
{47, 47, 45, 44, 47, 44, 44}
Returns: {0, 1, 2, 3, 5, 6, 4 }
{44, 44, 46, 45, 47, 44, 47}
Returns: {0, 1, 5, 3, 2, 4, 6 }
{44, 46, 46, 46, 45, 47, 44}
Returns: {0, 6, 4, 1, 2, 3, 5 }
{8, 8, 8, 8, 8, 9, 9}
Returns: {0, 1, 2, 3, 4, 5, 6 }
{9, 8, 9, 9, 9, 8}
Returns: {0, 1, 5, 2, 3, 4 }
{9, 9, 8, 9}
Returns: {0, 1, 2, 3 }
{9, 9, 9, 9}
Returns: {0, 1, 2, 3 }
{8, 8, 9, 9, 8, 9, 9}
Returns: {0, 1, 4, 2, 3, 5, 6 }
{24}
Returns: {0 }
{13}
Returns: {0 }
{24, 18}
Returns: {0, 1 }
{30, 45}
Returns: {0, 1 }
{2, 2, 1, 1, 2, 2, 3}
Returns: {0, 1, 2, 3, 4, 5, 6 }
{2, 1, 3, 3, 2, 3}
Returns: {0, 1, 4, 2, 3, 5 }
{2, 2, 2, 3, 2, 3}
Returns: {0, 1, 2, 4, 3, 5 }
{13, 32, 38, 25, 43, 47, 6 }
Returns: {0, 6, 3, 1, 2, 4, 5 }
{4, 7, 5 }
Returns: {0, 2, 1 }
{20, 47, 10, 47, 30, 47, 1 }
Returns: {0, 2, 6, 4, 1, 3, 5 }
{43, 42, 44, 42, 44, 43, 42 }
Returns: {0, 1, 3, 6, 5, 2, 4 }
{3, 2, 1 }
Returns: {0, 1, 2 }
{2, 3, 3, 2 }
Returns: {0, 3, 1, 2 }
{3, 2, 1, 4, 5, 6 }
Returns: {0, 1, 2, 3, 4, 5 }
{3, 4, 2, 1 }
Returns: {0, 2, 3, 1 }
{4, 3, 3 }
Returns: {0, 1, 2 }
{7, 6, 5, 4, 3, 2, 1 }
Returns: {0, 1, 2, 3, 4, 5, 6 }
{8, 5, 3, 4, 8, 5, 9 }
Returns: {0, 1, 2, 3, 5, 4, 6 }
{39, 44, 30, 19, 45, 40, 10 }
Returns: {0, 2, 3, 6, 5, 1, 4 }
{2, 2, 1 }
Returns: {0, 1, 2 }
{13, 32, 38, 8, 43, 47, 6 }
Returns: {0, 3, 6, 1, 2, 4, 5 }
{47, 47, 1, 2, 3, 4, 5 }
Returns: {0, 1, 2, 3, 4, 5, 6 }
{22, 32, 12, 25, 43, 47, 6 }
Returns: {0, 2, 6, 3, 1, 4, 5 }
{2, 2, 2, 1, 3, 3, 3 }
Returns: {0, 1, 2, 3, 4, 5, 6 }
{5, 4, 3, 2 }
Returns: {0, 1, 2, 3 }
{1 }
Returns: {0 }
{13, 6, 25, 32, 38, 43, 47 }
Returns: {0, 1, 2, 3, 4, 5, 6 }
{7, 5, 4 }
Returns: {0, 1, 2 }
{4, 2, 3, 10, 46, 46, 12 }
Returns: {0, 1, 2, 3, 6, 4, 5 }
{3, 2, 1, 4 }
Returns: {0, 1, 2, 3 }
{15, 14, 13, 12, 11, 10, 7 }
Returns: {0, 1, 2, 3, 4, 5, 6 }
{8, 5, 6, 7, 9, 10 }
Returns: {0, 1, 2, 3, 4, 5 }
{14, 12, 6, 12, 31, 42 }
Returns: {0, 1, 2, 3, 4, 5 }
{5 }
Returns: {0 }
{4, 3, 1, 2 }
Returns: {0, 1, 2, 3 }
{45, 43, 25, 17, 5, 4 }
Returns: {0, 1, 2, 3, 4, 5 }
{4, 3, 2, 1 }
Returns: {0, 1, 2, 3 }
{4, 7, 5, 2, 9, 1 }
Returns: {0, 3, 5, 2, 1, 4 }
{47, 46, 46 }
Returns: {0, 1, 2 }
{39, 40, 38, 41 }
Returns: {0, 2, 1, 3 }
{5, 4, 3, 2, 1 }
Returns: {0, 1, 2, 3, 4 }
{30 }
Returns: {0 }
{7, 5, 3 }
Returns: {0, 1, 2 }
{38, 25, 13, 6, 32, 43, 46 }
Returns: {0, 1, 2, 3, 4, 5, 6 }
{3, 5, 4, 2, 1 }
Returns: {0, 3, 4, 2, 1 }
{3, 3, 2, 2 }
Returns: {0, 1, 2, 3 }
{4 }
Returns: {0 }
{3, 2, 1, 2, 3 }
Returns: {0, 1, 2, 3, 4 }
{13, 6, 6, 13 }
Returns: {0, 1, 2, 3 }
{3, 3, 2 }
Returns: {0, 1, 2 }
{4, 7, 5, 1, 1, 1 }
Returns: {0, 3, 4, 5, 2, 1 }
{40, 1, 40, 1 }
Returns: {0, 1, 3, 2 }
{9, 7, 2, 2, 2 }
Returns: {0, 1, 2, 3, 4 }
{32, 13, 38, 25, 43, 47, 6 }
Returns: {0, 1, 6, 3, 2, 4, 5 }
{23, 34, 12, 1, 5, 7, 18 }
Returns: {0, 2, 3, 4, 5, 6, 1 }
{4, 4, 3, 3, 2, 2 }
Returns: {0, 1, 2, 3, 4, 5 }
{5, 5, 4, 5, 6, 1, 7 }
Returns: {0, 1, 2, 5, 3, 4, 6 }
{13, 32, 38, 25, 43, 6, 6 }
Returns: {0, 5, 6, 3, 1, 2, 4 }
{10, 12, 11, 6, 5, 5, 5 }
Returns: {0, 3, 4, 5, 6, 2, 1 }