fork(1) download
  1. #include <iostream>
  2. #include <string.h>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6.  
  7.  
  8. int main() {
  9. // your code goes here
  10. int n,m;
  11. long long int data[10003];
  12. long long int dp[2][10003];
  13. memset(data,0,sizeof(data));
  14. memset(dp,0,sizeof(dp));
  15. cin>>n>>m;
  16. for(int i=0;i<n;i++){
  17. cin>>data[i];
  18. }
  19. for(int i=0;i<n;i++){
  20. dp[1][i]=max(dp[1][i],data[i]);
  21. for(int j=0;j<i;j++){
  22. long long int d=data[i]+dp[1][j];
  23. long long int d2=data[i]+dp[0][j];
  24. if(j<=i-m+1){
  25. dp[1][i+1]=max(dp[1][i+1],d);
  26. }else if(i<=j+m){
  27. dp[1][j+m-1]=max(dp[1][j+m-1],d);
  28. }
  29.  
  30.  
  31. dp[1][i+1]=max(dp[1][i+1],d2);
  32. dp[0][i+m-1]=max(dp[0][i+m-1],d2);
  33. }
  34. dp[1][i+1]=max(dp[1][i+1],dp[1][i]);
  35. dp[0][i+1]=max(dp[0][i+1],dp[0][i]);
  36. }
  37. long long int ans=0;
  38. for(int i=0;i<n*2+3;i++){
  39. ans=max(ans,dp[0][i]);
  40. ans=max(ans,dp[1][i]);
  41. }
  42. cout<<ans<<endl;
  43. return 0;
  44. }
Success #stdin #stdout 0.01s 5280KB
stdin
12 5
864814169 716638377 926889183 891468826 217138351 891972397 504371916 678159995 435478604 181254225 760822841 688502728
stdout
3444498590