結果
| 問題 |
No.349 干支の置き物
|
| コンテスト | |
| ユーザー |
jp_ste
|
| 提出日時 | 2016-05-03 00:25:57 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 2,720 bytes |
| コンパイル時間 | 2,249 ms |
| コンパイル使用メモリ | 79,320 KB |
| 実行使用メモリ | 54,668 KB |
| 最終ジャッジ日時 | 2024-10-07 06:47:58 |
| 合計ジャッジ時間 | 7,586 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 WA * 13 |
ソースコード
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (Scanner scan = new Scanner(System.in)) {
int N = scan.nextInt();
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<N; i++) {
String key = scan.next();
Integer value = map.get(key);
if(value == null) {
map.put(key, 1);
} else {
map.replace(key, value+1);
}
}
ArrayList<Integer> array = new ArrayList<>();
for(Entry entry : map.entrySet()) {
array.add((Integer)entry.getValue());
}
while(true) {
if(array.size() == 1) {
System.out.println("NO");
break;
}
int max = 0;
int index = 0;
int zeroCount = 0;
for(int i=0; i<array.size(); i++) {
Integer v = array.get(i);
if(v == 0) {
zeroCount++;
}
if( max < v ) {
max = v;
index = i;
}
}
if(zeroCount == array.size()) {
System.out.println("YES");
break;
}
if(zeroCount == array.size()-1) {
if(max == 1) {
System.out.println("YES");
} else {
System.out.println("NO");
}
break;
}
int sum = 0;
int rem = max;
if(rem % 2 == 1) {
rem--;
}
for(int i=0; i<array.size(); i++) {
if(i == index) continue;
Integer v = array.get(i);
if(v == 0) continue;
sum += v;
if(rem > sum) {
array.set(i, 0);
int t = array.get(index);
array.set(index, t-v);
} else {
array.set(i, sum-rem);
array.set(index, 0);
break;
}
}
}
}
}
}
jp_ste