题意是:有n个火柴盒,每个火柴盒里有一定数目的火柴
现在问你在只能移动相邻的火柴盒中的火柴情况下
最少移动多少次可以使得最后每个火柴盒中火柴数目相同
读题没读到连续的,跪了一次
提醒下现在还未最终判题,看题解的小伙伴谨慎!!!
代码如下:
#include <cmath>
#include <cstdio>
#include <iostream>
#include <algorithm>
#define MAXN 50010
#define ll long long
using namespace std;
ll a[MAXN];
int main(void) {
int n, k;
while(cin >> n) {
ll sum = 0;
for(int i=0; i<n; ++i) {
cin >> a[i];
sum += a[i];
}
ll ave = sum / n;
sum = 0;
for(int i=0; i<n; ++i) {
ll tmp = a[i]-ave;
// cout << "tmp = " << tmp << endl;
if(tmp < 0) {
sum -= tmp;
a[i+1] += tmp;
}
else {
sum += tmp;
a[i+1] += tmp;
}
}
cout << sum << endl;
}
return 0;
}