TopcoderArchiveVisit Topcoder
SRM24 Apr 2007
SRM 346

HeightRound

Problem statement, definition, constraints, and public examples.

Problem Statement

There are several people that will sit around the same table in a circular fashion. Since all these people are very self-conscious about their height, you don't want to sit any short person next to a tall one. To formalize this, we want to minimize the maximum height difference between 2 adjacent persons.

You will be given the heights of the people as a int[]. Return a int[] with the height of each individual in clockwise order of a seating arrangement that follows the above rule. If there are several solutions, return the lexicographically first one.

Definition

Class:
HeightRound
Method:
getBestRound
Parameters:
int[]
Returns:
int[]
Method signature:
int[] getBestRound(int[] heights)
(be sure your method is public)

Constraints

  • heights will contain between 3 and 50 elements, inclusive.
  • Each element of heights will be between 1 and 1000, inclusive.

Examples

  1. {1,2,3,4}
    Returns: {1, 2, 4, 3 }
    It's better to separate the tallest and shortest people in the round. All solutions with 1 and 4 separated are equivalent, so we choose the lexicographically first one.
  2. {1000,500,1}
    Returns: {1, 500, 1000 }
    In a round of only 3 persons, everybody is next to everyone else, so we only have to return the lexicographically first representation.
  3. {1,3,4,5,7}
    Returns: {1, 3, 5, 7, 4 }
  4. {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
    Returns: {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
Back to all problems