1. #include<stdio.h>
  2. #include<stdbool.h>
  3. #include<malloc.h>
  4.  
  5. int min(int a, int b)
  6. {
  7. return a>b?b:a;
  8. }
  9. long long Solve (long long k, int* arr ,int n)
  10. {
  11. long long out = 0;
  12. int i,j;
  13. for (i=j=0; i<n ;i++)
  14. {
  15. if (arr[i]<=0)
  16. continue;
  17.  
  18. while(i-j>k)
  19. ++j;
  20. while(arr[i]!=0 && (i+k)>=min(n-1,j))
  21. {
  22. if(arr[j]>0)
  23. {
  24. j++;
  25. continue;
  26. }
  27. int x = min(arr[i],abs(arr[j]));
  28. arr[i]-=x;
  29. arr[j]+=x;
  30. if(arr[j]>=0)
  31. j++;
  32. }
  33. }
  34. for (i=0; i <n ;i++)
  35. out += abs(arr[i]);
  36. return out;
  37. }
  38.  
  39. int main()
  40. {
  41. long long k;
  42. int n,i_arr;
  43. scanf("%d %lld", &n, &k);
  44. int *arr = (int *)malloc(n*sizeof(int));
  45. for(i_arr=0; i_arr<n; i_arr++)
  46. scanf("%d", &arr[i_arr]);
  47. printf("%lld", Solve(k, arr, n));
  48. }
Language: C