fork download
  1. #include <bits/stdc++.h> // ZENDA
  2. using namespace std;
  3. #define ll long long
  4. const ll limn=1e4+7;
  5. const ll limm=500+7;
  6. ll dp[limn][limm][2];
  7. ll n,m,c;
  8. vector <ll> a;
  9. int main(){
  10. cin.tie(nullptr)->sync_with_stdio(0);
  11. #define F "TROCHOI"
  12. if (ifstream(F".inp")){
  13. freopen(F".inp","r",stdin);
  14. freopen(F".out","w",stdout);
  15. }
  16. cin>>n>>m>>c;
  17. a.resize(n+1);
  18. for (ll i=1;i<=n;i++) cin>>a[i];
  19. for (ll i=1;i<=n;i++)
  20. for (ll j=0;j<=m;j++){
  21. if (j>0){
  22. if (dp[i-1][j][1]>=c) dp[i][j-1][0]=max(dp[i][j-1][0],dp[i-1][j][1]-c);
  23. if (dp[i-1][j][0]>=c) dp[i][j-1][0]=max(dp[i][j-1][0],dp[i-1][j][0]-c);
  24. }
  25. if (j<m) dp[i][j+1][1]=max(dp[i][j+1][1],dp[i-1][j][1]+a[i]);
  26. if(j==0) dp[i][j+1][1]=max(dp[i][j+1][1],dp[i-1][j][0]+a[i]);
  27. dp[i][j][0]=max(dp[i][j][0],dp[i-1][j][0]);
  28. dp[i][j][0]=max(dp[i][j][0],dp[i-1][j][1]);
  29. }
  30. cout<<dp[n][0][0];
  31. return 0;
  32. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty