提交时间:2023-08-14 12:25:51
运行 ID: 98181
#include <bits/stdc++.h> #define int long long using namespace std; const int maxn=5e3+10; int n,k,x,a[maxn],f[maxn][maxn]; signed main() { cin>>n>>k>>x; for(int i=1;i<=n;i++) cin>>a[i],a[i]-=x; for(int i=1;i<=n;i++) f[i][0]=max(f[i-1][0]+a[i],0ll); int ans=0; for(int i=1;i<=n;i++) { if (i<=n-k) ans=max(ans,f[i][0]); for(int j=1;j<=min(k,i);j++) { if(i==j) f[i][j]=max(f[i-1][j-1]+a[i]+x*2,0ll); else f[i][j]=max(max(f[i-1][j-1]+a[i]+x*2,f[i-1][j]+a[i]),0ll); if(i<=n-k+j) ans=max(ans,f[i][j]); } } cout<<ans; return 0; }