結果
| 問題 |
No.710 チーム戦
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-06-29 20:32:59 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 259 ms / 3,000 ms |
| コード長 | 1,216 bytes |
| コンパイル時間 | 2,305 ms |
| コンパイル使用メモリ | 78,744 KB |
| 実行使用メモリ | 109,964 KB |
| 最終ジャッジ日時 | 2024-06-30 23:54:31 |
| 合計ジャッジ時間 | 9,401 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 25 |
ソースコード
import java.io.FileNotFoundException;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
new Main().run();
}
void run() {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
if (!(1 <= N && N <= 100))
throw new AssertionError();
int[][] ok = new int[N + 1][100000 + 1];
for (int i = 0; i < ok.length; ++i) {
for (int j = 0; j < ok[i].length; ++j) {
ok[i][j] = Integer.MAX_VALUE / 3;
}
}
ok[0][0] = 0;
for (int i = 0; i < N; ++i) {
int A = sc.nextInt();
int B = sc.nextInt();
if (!(1 <= A && A <= 1000) || !(1 <= B && B <= 1000))
throw new AssertionError();
for (int j = 0; j < ok[i].length; ++j) {
if (ok[i][j] == Integer.MAX_VALUE / 3)
continue;
ok[i + 1][j + A] = Math.min(ok[i + 1][j + A], ok[i][j]);
ok[i + 1][j] = Math.min(ok[i + 1][j], ok[i][j] + B);
}
}
int ans = Integer.MAX_VALUE / 3;
for (int i = 0; i < ok[N].length; ++i) {
ans = Math.min(ans, Math.max(i, ok[N][i]));
}
System.out.println(ans);
}
static void tr(Object... objects) {
System.out.println(Arrays.deepToString(objects));
}
}