結果
| 問題 | No.4 おもりと天秤 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-06-18 14:00:33 |
| 言語 | Java (openjdk 25.0.2) |
| 結果 |
AC
|
| 実行時間 | 80 ms / 5,000 ms |
| コード長 | 1,104 bytes |
| 記録 | |
| コンパイル時間 | 4,084 ms |
| コンパイル使用メモリ | 87,192 KB |
| 実行使用メモリ | 47,168 KB |
| 最終ジャッジ日時 | 2026-06-18 14:00:42 |
| 合計ジャッジ時間 | 6,851 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 23 |
ソースコード
import java.util.Arrays;
import java.util.Scanner;
public class No4 {
//未完成
public static void main(String[] args) {
Scanner scanner = new Scanner((System.in));
int N = scanner.nextInt() , i , sum = 0 , max = 0;
Integer[] W = new Integer[N];
for(i = 0;i < N;i++) {
W[i] = scanner.nextInt();
sum += W[i];
max = Math.max(max, W[i]);
}
scanner.close();
Arrays.sort(W);
if(sum % 2 == 1 || max > sum / 2) {
System.out.println("impossible");
}else {
boolean ans = false;
int[][] Wsum = new int[N+1][sum+1];
int j , count;
Wsum[1][W[0]] = 1;
count = W[0];
for(i = 2;i <= N;i++) {
Wsum[i][W[i-1]] = 1;
count += W[i-1];
for(j = 1;j <= sum;j++) {
if(Wsum[i-1][j] == 1) {
Wsum[i][j] = 1;
Wsum[i][j+W[i-1]] = 1;
}
if(j+W[i-1] >= count) {
continue;
}
}
if(Wsum[i][sum /2] == 1) {
ans = true;
break;
}
}
if(ans) {
System.out.println("possible");
}else {
System.out.println("impossible");
}
}
}
}