TopCoder SRM 695 Div1 Easy: BearPasswordLexic
もうだめ
コード
import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; public class BearPasswordLexic { private String gen(int lenght, int isa) { String s = ""; for (int i = 0; i < lenght; i++) { if (isa % 2 == 1) s += 'a'; else s += 'b'; } return s; } public String findPassword(int[] x) { final int N = x.length; int[] y = new int[N]; ArrayList<Integer> list = new ArrayList<>(); for (int n = N - 1; n >= 0; n--) { while (y[n] < x[n]) { list.add(n + 1); for (int i = n; i >= 0; i--) y[i] += (n + 1 - i); } } for (int i = 0; i < N; i++) { if (x[i] != y[i]) return ""; } Collections.sort(list); ArrayDeque<Integer> deque = new ArrayDeque<>(list); String s = ""; int isa = 1; while ((!deque.isEmpty())) { if (isa % 2 == 1) { s += gen(deque.pollLast(), isa++); } else { s += gen(deque.pollFirst(), isa++); } } if (s.length() != N) return ""; return s; } }