fork download
#include <bits/stdc++.h>
using namespace std;
int main() 
{
  int test;
  scanf("%d",&test);
  while(test>0)
  {
    int n,d,i,j;
    scanf("%d%d",&n,&d);
    long long sum=0,average=0,cost=0;
    long long arr[n];
    for(i=0;i<n;i++)
    {
      cin>>arr[i];
      sum = sum + arr[i];
    }
    average = sum / n;
    for(i=0;i<n-d;i++)
    {
      if((arr[i]<average)&&(average-arr[i]>arr[i+d]))
      {
        int required = average - arr[i] - arr[i+d];
        cost = cost + abs(average - arr[i]);
        arr[i]= average;
        arr[i+d]=0;
        for(j=i+2*d;j<n;j+=d)
        {
          if(arr[j]<required)
          {
            cost = cost + arr[j];
            required = required - arr[j];
            arr[j]=0;
          } 
          else
          {
            cost = cost + required;
            arr[j] = arr[j] - required ;
            break;
          }
        }
        if(j>=n) 
          break;
      }
      else
      {
        cost = cost + abs(average - arr[i]);
        arr[i+d] = arr[i+d] - average + arr[i];
        arr[i] = average;  
      }
    }
    for(i=0;i<n;i++)
    {
      if(arr[i]!=average)
        break;
    }
    if(i==n)
      cout<<cost<<"\n";
    else
      cout<<"-1"<<"\n";
    test -- ;
  }
  return 0;
}
Runtime error #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty