use proconio::input; use std::cmp::min; fn main(){ input!{ n: usize, k: i64, x: i64, a: [i64; n], } let mut dp = vec![[i64::MAX; 2]; n]; for i in 0..n{ if i == 0{ dp[i][0] = a[i]; dp[i][1] = k+x; }else{ dp[i][0] = min(dp[i-1][0], dp[i-1][1])+a[i]; dp[i][1] = min(dp[i-1][0]+k+x, dp[i-1][1]+k); } } println!("{}", min(dp[n-1][0], dp[n-1][1])); }