結果
問題 | No.1816 MUL-DIV Game |
ユーザー | merlin |
提出日時 | 2022-01-21 22:11:42 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 687 ms / 2,000 ms |
コード長 | 1,484 bytes |
コンパイル時間 | 2,484 ms |
コンパイル使用メモリ | 79,200 KB |
実行使用メモリ | 67,168 KB |
最終ジャッジ日時 | 2024-11-26 00:36:32 |
合計ジャッジ時間 | 12,720 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
import java.io.*; import java.util.*; class Main { public static void main(String args[])throws Exception { BufferedReader bu=new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb=new StringBuilder(); int n=Integer.parseInt(bu.readLine()); int i; long a; String s[]=bu.readLine().split(" "); TreeMap<Long,Integer> tm=new TreeMap<>(); for(i=0;i<n;i++) { a=Integer.parseInt(s[i]); tm.put(a,tm.getOrDefault(a,0)+1); } long ans=-1; boolean alice=true; while(true) { long lo=tm.higherKey(-1l); if(tm.size()==1 && tm.get(lo)==1) { ans=lo; break; } if(alice) { remove(tm,lo); long lo2=tm.higherKey(lo-1); remove(tm,lo2); tm.put(lo*lo2,tm.getOrDefault(lo*lo2,0)+1); } else { long hi=tm.lowerKey(Long.MAX_VALUE); remove(tm,hi); long hi2=tm.lowerKey(hi+1); remove(tm,hi2); tm.put(1l,tm.getOrDefault(1l,0)+1); } alice=!alice; } System.out.println(ans); } static void remove(TreeMap<Long,Integer> tm,long x) { int v=tm.get(x); if(v==1) tm.remove(x); else tm.put(x,v-1); } }