fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int test;
  6. scanf("%d",&test);
  7. while(test>0)
  8. {
  9. int n,d,i,j;
  10. scanf("%d%d",&n,&d);
  11. long long sum=0,average=0,cost=0;
  12. long long arr[n];
  13. for(i=0;i<n;i++)
  14. {
  15. cin>>arr[i];
  16. sum = sum + arr[i];
  17. }
  18. average = sum / n;
  19. for(i=0;i<n-d;i++)
  20. {
  21. if((arr[i]<average)&&(average-arr[i]>arr[i+d]))
  22. {
  23. int required = average - arr[i] - arr[i+d];
  24. cost = cost + abs(average - arr[i]);
  25. arr[i]= average;
  26. arr[i+d]=0;
  27. for(j=i+2*d;j<n;j+=d)
  28. {
  29. if(arr[j]<required)
  30. {
  31. cost = cost + arr[j];
  32. required = required - arr[j];
  33. arr[j]=0;
  34. }
  35. else
  36. {
  37. cost = cost + required;
  38. arr[j] = arr[j] - required ;
  39. break;
  40. }
  41. }
  42. if(j>=n)
  43. break;
  44. }
  45. else
  46. {
  47. cost = cost + abs(average - arr[i]);
  48. arr[i+d] = arr[i+d] - average + arr[i];
  49. arr[i] = average;
  50. }
  51. }
  52. for(i=0;i<n;i++)
  53. {
  54. if(arr[i]!=average)
  55. break;
  56. }
  57. if(i==n)
  58. cout<<cost<<"\n";
  59. else
  60. cout<<"-1"<<"\n";
  61. test -- ;
  62. }
  63. return 0;
  64. }
Runtime error #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty