提交时间:2025-11-22 10:35:50
运行 ID: 199819
#include <iostream> #define int long long using namespace std; int n,k,x,a[200005],qian[200005]; int l,r; int check(int mi) { int ans = -1e18; for(int i = mi;i <= n;i ++)ans = max(ans,qian[i] - qian[i - mi] + (min(mi,k) - mi + min(mi,k)) * x); return ans; } signed main() { cin >> n >> k >> x; if(x < 0)k = n - k,x = -x; for(int i = 1;i <= n;i ++)cin >> a[i],qian[i] = qian[i - 1] + a[i]; r = n; while(l < r) { int mid = (l + r) >> 1; if(check(mid) > check(mid + 1))r = mid; else l = mid + 1; } cout << check(l); }