#![allow( non_snake_case, unused_variables, unused_assignments, unused_mut, unused_imports, unused_macros, dead_code, static_mut_refs )] // use ac_library::*; use itertools::Itertools; use proconio::{input, derive_readable,marker::*}; use std::{cmp::*, collections::*, dbg, fmt::*, hash::*, marker::PhantomData, ops::*, println}; // use rustc_hash::*; fn main() { input!{ n: usize, k: usize, x: isize, A: [isize;n], } const INF: isize = -3_000_000_000_000_000_000; let mut ans = INF; let mut hq = BinaryHeap::new(); let mut now = 0; for a in A.iter().enumerate() { hq.push(-1*a.1); now += *a.1; if hq.len() > k { now -= -1*hq.peek().unwrap(); hq.pop(); } // dbg!(&a,&hq,&now); ans = max(ans, now - x*(a.0 as isize +1)); } println!("{}",ans); } trait Pipe: Sized { fn pipe(self, f: F) -> T where F: FnOnce(Self) -> T, { f(self) } } impl Pipe for T {} fn yesno(b: bool) { if b { println!("Yes"); } else { println!("No"); } }