結果
問題 | No.1816 MUL-DIV Game |
ユーザー |
![]() |
提出日時 | 2022-01-21 22:07:47 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 1,134 ms / 2,000 ms |
コード長 | 2,001 bytes |
コンパイル時間 | 2,562 ms |
コンパイル使用メモリ | 79,528 KB |
実行使用メモリ | 64,184 KB |
最終ジャッジ日時 | 2024-11-26 00:29:39 |
合計ジャッジ時間 | 19,797 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
import java.util.Scanner;import java.util.TreeMap;public class Main {public static void main(String[] args) throws Exception {Scanner sc = new Scanner(System.in);int n = sc.nextInt();MultiTreeSet<Long> set = new MultiTreeSet<>();for (int i = 0; i < n; i++) {set.add(sc.nextLong());}sc.close();for (int i = 0; i < n - 1; i++) {if (i % 2 == 0) {long a = set.pollFirst();long b = set.pollFirst();set.add(a * b);} else {long a = set.pollLast();long b = set.pollLast();set.add((b + a - 1) / a);}}System.out.println(set.pollFirst());}static class MultiTreeSet<T> {TreeMap<T, Integer> map = new TreeMap<>();int size = 0;void add(T e) {map.put(e, map.getOrDefault(e, 0) + 1);size++;}void remove(T e) {if (e != null && map.containsKey(e)) {int val = map.get(e);if (val == 1) {map.remove(e);} else {map.put(e, val - 1);}size--;}}int sizeAll() {return size;}int sizeUnq() {return map.size();}boolean contains(T e) {return map.containsKey(e);}boolean isEmpty() {return size == 0;}T lower(T e) {return map.lowerKey(e);}T floor(T e) {return map.floorKey(e);}T higher(T e) {return map.higherKey(e);}T ceiling(T e) {return map.ceilingKey(e);}T first() {return map.firstKey();}T last() {return map.lastKey();}T pollFirst() {T e = map.firstKey();remove(e);return e;}T pollLast() {T e = map.lastKey();remove(e);return e;}@SuppressWarnings("unchecked")T[] toArrayUnq() {Object[] arr = map.keySet().toArray();return (T[]) arr;}@SuppressWarnings("unchecked")T[] toArrayAll() {Object[] arr = new Object[size];int idx = 0;for (T e : map.keySet()) {int num = map.get(e);for (int i = 0; i < num; i++) {arr[idx] = e;idx++;}}return (T[]) arr;}}}