結果
| 問題 | No.3401 Large Knapsack Problem |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-12-08 16:58:36 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,035 bytes |
| 記録 | |
| コンパイル時間 | 11,054 ms |
| コンパイル使用メモリ | 400,052 KB |
| 実行使用メモリ | 158,336 KB |
| 最終ジャッジ日時 | 2025-12-08 16:59:39 |
| 合計ジャッジ時間 | 59,996 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 14 WA * 28 |
ソースコード
fn getline() -> String {
let mut ret = String::new();
std::io::stdin().read_line(&mut ret).unwrap();
ret
}
fn main() {
let ints = getline().trim().split_whitespace()
.map(|x| x.parse::<usize>().unwrap())
.collect::<Vec<_>>();
let n = ints[0];
let maxw = ints[1];
let mut vw = vec![];
let mut ma = (0, 0);
for i in 0..n {
let ints = getline().trim().split_whitespace()
.map(|x| x.parse::<i64>().unwrap())
.collect::<Vec<_>>();
vw.push((ints[0], ints[1] as usize));
let q = ints[0] << 32 / ints[1];
ma = std::cmp::max(ma, (q, i));
}
const W: usize = 20_000_000;
let mut dp = vec![0i64; W];
for &(v, w) in &vw {
for i in 0..W - w {
dp[i + w] = dp[i + w].max(dp[i] + v);
}
}
let mut ans = 0;
let (optv, optw) = vw[ma.1];
for i in 0..W {
if i < maxw {
ans = ans.max(dp[i] + ((maxw - i) / optw) as i64 * optv);
}
}
println!("{ans}");
}