結果
| 問題 |
No.4 おもりと天秤
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-06-20 15:35:22 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 100 ms / 5,000 ms |
| コード長 | 2,429 bytes |
| コンパイル時間 | 3,298 ms |
| コンパイル使用メモリ | 77,568 KB |
| 実行使用メモリ | 43,032 KB |
| 最終ジャッジ日時 | 2024-06-26 09:35:49 |
| 合計ジャッジ時間 | 5,603 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 23 |
ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
proconScan proScan = new proconScan(" ");
Integer A = proScan.scanInteger1();
proScan.scan();
Integer[] costList = proScan.getInt();
Integer sum = 0;
for (Integer buf : costList) {
sum += buf;
}
boolean[] dp = new boolean[10105];
Integer i, j;
dp[0]=true;
for (i = 0; i < A; i++) {
for (j = 10104 - costList[i]; j >= 0; j--) {
dp[j + costList[i]] |= dp[j];
}
}
System.out.print(sum % 2 == 1 || !dp[sum / 2] ? "impossible" : "possible");
proScan.proconEnd();
}
}
class proconScan {
private BufferedReader br;
private String inLine;
private String[] inString;
private Integer idx;
private String splitChar;
public proconScan() {
br = new BufferedReader(new InputStreamReader(System.in));
idx = 0;
splitChar = " ";
}
public proconScan(String split) {
br = new BufferedReader(new InputStreamReader(System.in));
idx = 0;
splitChar = split;
}
public void proconEnd() throws IOException {
// TODO 自動生成されたメソッド・スタブ
br.close();
}
public String scan() throws IOException {
idx = 0;
inLine = br.readLine();
inString = inLine.split(splitChar, 0);
return inLine;
}
public Integer scanInteger1() throws IOException {
scan();
return Integer.parseInt(inString[0]);
}
public String backLine() {
return inLine;
}
public String nextString() {
return inString[idx++];
}
public String[] getString() {
return inString;
}
public Integer nextInt() {
Integer num;
try {
num = Integer.parseInt(inString[idx++]);
} catch (NumberFormatException e) {
num = null;// TODO: handle exception
}
return num;
}
public Integer[] getInt() {
Integer[] num = new Integer[this.getLen()];
for (int i = 0; i < this.getLen(); i++) {
num[i] = Integer.parseInt(inString[i]);
}
return num;
}
public Float nextFloat() {
Float num;
try {
num = Float.parseFloat(inString[idx++]);
} catch (NumberFormatException e) {
num = null;// TODO: handle exception
}
return num;
}
public Float[] getFloat() {
Float[] num = new Float[this.getLen()];
for (int i = 0; i < this.getLen(); i++) {
num[i] = Float.parseFloat(inString[i]);
}
return num;
}
public Integer getLen() {
return inString.length;
}
}