結果
| 問題 | No.1594 Three Classes |
| コンテスト | |
| ユーザー |
kinkincindy
|
| 提出日時 | 2021-07-09 22:58:33 |
| 言語 | Java (openjdk 23) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,165 bytes |
| 記録 | |
| コンパイル時間 | 2,394 ms |
| コンパイル使用メモリ | 79,648 KB |
| 実行使用メモリ | 68,332 KB |
| 最終ジャッジ日時 | 2024-07-01 18:04:15 |
| 合計ジャッジ時間 | 6,523 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 3 |
| other | AC * 3 TLE * 1 -- * 14 |
ソースコード
import java.lang.reflect.Array;
import java.util.*;
class Main {
static List<Set<Integer>> poss = new ArrayList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.next());
long[] e = new long[n];
long sum = 0;
for (int i = 0; i < n; i++){
e[i] = Integer.parseInt(sc.next());
sum += e[i];
}
if (sum % 3 != 0){
System.out.print("No");
return;
}
long target = sum / 3;
boolean[] visited = new boolean[n];
boolean flag = false;
dfs(0, n, e,visited, new HashSet<>(), target);
for (int i = 0; i < poss.size(); i++){
for (int j = i + 1; j < poss.size(); j++){
for (int k = j + 1; k < poss.size(); k++){
Set<Integer> set1 = poss.get(i);
Set<Integer> set2 = poss.get(j);
Set<Integer> set3 = poss.get(k);
for (int a: set1){
if (!set2.contains(a) && !set3.contains(a)){
for (int b: set2){
if (!set1.contains(b) && !set3.contains(b)){
flag = true;
break;
}
}
}
}
}
}
}
if (flag){
System.out.print("Yes");
} else {
System.out.print("No");
}
}
private static void dfs(int index, int n, long[] e, boolean[] visited, Set<Integer> path, long remain){
if (remain <= 0 || index > n){
if (remain == 0){
poss.add(new HashSet<>(path));
}
return;
}
for (int i = index; i < n; i++){
dfs(i + 1, n, e, visited, path, remain);
path.add(i);
visited[i] = true;
dfs(i + 1, n, e, visited, path, remain - e[i]);
path.remove(i);
visited[i] = false;
}
}
}
kinkincindy