TopCoder SRM 662 Div1 Easy: FoxesOfTheRoundTable
解法
高さでソートして、1番目を末尾、2番目を先頭、3番目を末尾、4番目を先頭、 ... とリストに挿入し、それを返せば良い。
コード
import java.util.ArrayList; import java.util.Arrays; public class FoxesOfTheRoundTable { public int[] minimalDifference(int[] heights) { int N = heights.length; Fox[] foxs = new Fox[N]; for (int i = 0; i < N; i++) { foxs[i] = new Fox(i, heights[i]); } Arrays.sort(foxs); ArrayList<Integer> list = new ArrayList<>(); for (int i = 0; i < N; i++) { if (i % 2 == 0) { list.add(foxs[i].id); } else { list.add(0, foxs[i].id); } } int[] ret = new int[N]; for (int i = 0; i < N; i++) { ret[i] = list.get(i); } return ret; } } class Fox implements Comparable<Fox> { int id, height; public Fox(int i, int h) { this.id = i; this.height = h; } @Override public int compareTo(Fox o) { return this.height - o.height; } }