/* -*- coding: utf-8 -*- * * 3656.cc: No.3656 Game Scores and Costs - yukicoder */ #include #include #include using namespace std; /* constant */ const int MAX_N = 200000; const long long LINF = 1LL << 60; /* typedef */ using ll = long long; using msi = multiset; /* global variables */ int as[MAX_N]; /* subroutines */ /* main */ int main() { int n, k, x; scanf("%d%d%d", &n, &k, &x); for (int i = 0; i < n; i++) scanf("%d", as + i); ll sum = 0, maxf = -LINF; msi q; for (int i = 0; i < n; i++) { sum += as[i]; q.insert(as[i]); while ((int)q.size() > k) sum -= *q.begin(), q.erase(q.begin()); ll f = sum - (ll)x * (i + 1); maxf = max(maxf, f); } printf("%lld\n", maxf); return 0; }