fork 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. for(int j=0;j<=i;j++){
  21. long long int d=data[i]+dp[1][j];
  22. long long int d2=data[i]+dp[0][j];
  23. if(j<=i-m+1){
  24. dp[1][i+1]=max(dp[1][i+1],d);
  25. }else if(i<=j+m){
  26. dp[1][j+m]=max(dp[1][j+m],d);
  27. }
  28.  
  29.  
  30. dp[1][i+1]=max(dp[1][i+1],d2);
  31. dp[0][i+m-1]=max(dp[0][i+m],d2);
  32. }
  33. dp[1][i+1]=max(dp[1][i+1],dp[1][i]);
  34. dp[0][i+1]=max(dp[0][i+1],dp[0][i]);
  35. }
  36. long long int ans=0;
  37. for(int i=0;i<n*2+3;i++){
  38. ans=max(ans,dp[0][i]);
  39. ans=max(ans,dp[1][i]);
  40. }
  41. cout<<ans<<endl;
  42. return 0;
  43. }
Success #stdin #stdout 0s 5292KB
stdin
12 5
864814169 716638377 926889183 891468826 217138351 891972397 504371916 678159995 435478604 181254225 760822841 688502728
stdout
3241028921