結果
| 問題 | No.2889 Rusk |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-09-13 22:32:57 |
| 言語 | Rust (1.97.1 + proconio + num + itertools + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 37 ms / 2,000 ms |
| + 179µs | |
| コード長 | 1,024 bytes |
| 記録 | |
| コンパイル時間 | 11,782 ms |
| コンパイル使用メモリ | 184,608 KB |
| 実行使用メモリ | 26,424 KB |
| 最終ジャッジ日時 | 2026-08-26 14:23:57 |
| 合計ジャッジ時間 | 9,107 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 52 |
ソースコード
use proconio::input;
const NUM_STATES: usize = 5;
fn main() {
input! {
n: usize,
aa: [usize; n],
bb: [usize; n],
cc: [usize; n],
}
let mut dp1 = vec![[0_usize; NUM_STATES]; n + 1];
for i in 0..n {
let weights = [aa[i], bb[i], cc[i], bb[i], aa[i]];
for state in 0..NUM_STATES {
for next_state in state..NUM_STATES {
dp1[i + 1][next_state] =
dp1[i + 1][next_state].max(dp1[i][state] + weights[next_state]);
}
}
}
let mut dp2 = vec![[0_usize; NUM_STATES]; n + 1];
for i in 0..n {
let weights = [aa[i], bb[i], aa[i], bb[i], aa[i]];
for state in 0..NUM_STATES {
for next_state in state..NUM_STATES {
dp2[i + 1][next_state] =
dp2[i + 1][next_state].max(dp2[i][state] + weights[next_state]);
}
}
}
let ans = dp1[n][2..].iter().chain(&dp2[n][3..]).max().unwrap();
println!("{}", ans);
}