結果

問題 No.4 おもりと天秤
コンテスト
ユーザー shin
提出日時 2026-06-18 13:54:19
言語 Java
(openjdk 25.0.2)
コンパイル:
javac -encoding UTF8 _filename_
実行:
java -ea -Xmx700m -Xss256M -DONLINE_JUDGE=true _class_
結果
AC  
実行時間 105 ms / 5,000 ms
コード長 994 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 4,473 ms
コンパイル使用メモリ 87,044 KB
実行使用メモリ 47,340 KB
最終ジャッジ日時 2026-06-18 13:54:32
合計ジャッジ時間 9,034 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 23
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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; 
			
			Wsum[1][W[0]] = 1;
			for(i = 2;i <= N;i++) {
				Wsum[i][W[i-1]] = 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(Wsum[i][sum /2] == 1) {
					ans = true;
					break;
				}

			}
			
			if(ans) {
				System.out.println("possible");
			}else {
				System.out.println("impossible");
			}
			
		}
	
	}


}
0