Module d
Expand description
§ABC 369 D - Bonus EXP
refs: https://atcoder.jp/contests/abc369/tasks/abc369_d
use proconio::input;
fn main() {
input! {
n: usize,
a: [usize; n],
}
// dp[i 体目][i体目を含めて倒した数の合計が偶数(0) or 奇数(1)] = 最大経験値
let mut dp = vec![vec![0; 2]; n + 1];
// 1体目は奇数にしかならない
dp[1][1] = a[0];
for i in 2..=n {
let x = a[i - 1];
// i 体目を倒さない or 倒す
dp[i][0] = dp[i - 1][0].max(dp[i - 1][1] + 2 * x);
dp[i][1] = dp[i - 1][1].max(dp[i - 1][0] + x);
}
println!("{}", dp[n][0].max(dp[n][1]));
}