結果
問題 | No.1095 Smallest Kadomatsu Subsequence |
ユーザー | ks2m |
提出日時 | 2020-06-27 00:17:43 |
言語 | Java21 (openjdk 21) |
結果 |
AC
|
実行時間 | 913 ms / 2,000 ms |
コード長 | 1,487 bytes |
コンパイル時間 | 2,271 ms |
コンパイル使用メモリ | 80,084 KB |
実行使用メモリ | 77,732 KB |
最終ジャッジ日時 | 2024-07-05 01:39:48 |
合計ジャッジ時間 | 14,196 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 50 ms
37,068 KB |
testcase_01 | AC | 50 ms
36,900 KB |
testcase_02 | AC | 50 ms
37,184 KB |
testcase_03 | AC | 52 ms
36,820 KB |
testcase_04 | AC | 51 ms
36,800 KB |
testcase_05 | AC | 51 ms
37,140 KB |
testcase_06 | AC | 52 ms
37,172 KB |
testcase_07 | AC | 52 ms
37,200 KB |
testcase_08 | AC | 54 ms
36,896 KB |
testcase_09 | AC | 55 ms
37,132 KB |
testcase_10 | AC | 53 ms
36,992 KB |
testcase_11 | AC | 53 ms
37,156 KB |
testcase_12 | AC | 52 ms
37,248 KB |
testcase_13 | AC | 144 ms
41,876 KB |
testcase_14 | AC | 152 ms
42,228 KB |
testcase_15 | AC | 147 ms
42,028 KB |
testcase_16 | AC | 154 ms
41,900 KB |
testcase_17 | AC | 152 ms
42,092 KB |
testcase_18 | AC | 154 ms
42,076 KB |
testcase_19 | AC | 140 ms
42,088 KB |
testcase_20 | AC | 159 ms
42,252 KB |
testcase_21 | AC | 151 ms
42,052 KB |
testcase_22 | AC | 149 ms
42,332 KB |
testcase_23 | AC | 880 ms
74,760 KB |
testcase_24 | AC | 879 ms
74,340 KB |
testcase_25 | AC | 867 ms
74,372 KB |
testcase_26 | AC | 849 ms
74,176 KB |
testcase_27 | AC | 873 ms
74,324 KB |
testcase_28 | AC | 648 ms
66,596 KB |
testcase_29 | AC | 617 ms
67,040 KB |
testcase_30 | AC | 913 ms
77,732 KB |
testcase_31 | AC | 887 ms
77,696 KB |
testcase_32 | AC | 898 ms
77,568 KB |
ソースコード
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.TreeMap; import java.util.TreeSet; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); String[] sa = br.readLine().split(" "); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = Integer.parseInt(sa[i]); } br.close(); TreeMap<Integer, Integer> map = new TreeMap<>(); for (int i = 0; i < n; i++) { map.put(a[i], i); } TreeSet<Integer> set = new TreeSet<>(); boolean h = false; int ans = Integer.MAX_VALUE; for (Integer k : map.keySet()) { if (set.size() == 0) { set.add(map.get(k)); } else if (set.size() == 1) { if (set.last() < map.get(k)) { h = true; } set.add(map.get(k)); } else { if (h && set.last() > map.get(k)) { int f = set.pollFirst(); int v1 = a[f]; int v2 = a[map.get(k)]; int v3 = a[set.higher(map.get(k))]; ans = Math.min(ans, v1 + v2 + v3); set.add(f); } else if (!h && set.first() < map.get(k)) { int f = set.pollLast(); int v1 = a[f]; int v2 = a[map.get(k)]; int v3 = a[set.lower(map.get(k))]; ans = Math.min(ans, v1 + v2 + v3); set.add(f); } else { set.add(map.get(k)); } } } if (ans == Integer.MAX_VALUE) { System.out.println(-1); } else { System.out.println(ans); } } }