fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.  
  5. vector<int>v={100,100,100};
  6. int n=v.size();
  7. int p=1;
  8. int k=3;
  9.  
  10. vector<vector<vector<int>>>dp(n,vector<vector<int>>(k+1,vector<int>(3,INT_MIN)));
  11. for(int i=0;i<n;i++){
  12. for(int j=0;j<3;j++){
  13. dp[i][0][j]=0;
  14. }
  15. }
  16. dp[0][1][1]=v[0];
  17. dp[0][1][2]=v[0];
  18. dp[1][1][1]=v[1];
  19. dp[1][1][2]=v[2];
  20. dp[1][2][1]=v[1]+v[2];
  21. dp[1][2][2]=v[1]+v[2];
  22. dp[1][1][0]=v[0];
  23.  
  24. for(int i=2;i<n;i++){
  25. for(int j=1;j<=k;j++){
  26. for(int c=0;c<3;c++){
  27. dp[i][j][0]=max({dp[i-1][j][0],dp[i-1][j][1],dp[i-1][j][2]});
  28. dp[i][j][1]=max({v[i]+dp[i-1][j-1][2],v[i]+dp[i-1][j-1][0]});
  29. dp[i][j][2]=max({v[i]+dp[i-1][j-1][1],v[i]+dp[i-1][j-1][0]});
  30. }
  31. }
  32. }
  33. cout<<*max_element(dp[n-1][k].begin(),dp[n-1][k].end());
  34.  
  35. return 0;
  36. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
300