#include<stdio.h>
#include<stdbool.h>
#include<malloc.h>
int min(int a, int b)
{
return a>b?b:a;
}
long long Solve (long long k, int* arr ,int n)
{
long long out = 0;
int i,j;
for (i=j=0; i<n ;i++)
{
if (arr[i]<=0)
continue;
while(i-j>k)
++j;
while(arr[i]!=0 && (i+k)>=min(n-1,j))
{
if(arr[j]>0)
{
j++;
continue;
}
int x = min(arr[i],abs(arr[j]));
arr[i]-=x;
arr[j]+=x;
if(arr[j]>=0)
j++;
}
}
for (i=0; i <n ;i++)
out += abs(arr[i]);
return out;
}
int main()
{
long long k;
int n,i_arr;
scanf("%d %lld", &n, &k);
int *arr = (int *)malloc(n*sizeof(int));
for(i_arr=0; i_arr<n; i_arr++)
scanf("%d", &arr[i_arr]);
printf("%lld", Solve(k, arr, n));
}
Language: C