Problem
环形分金币
Solution
中位数。
对于第1个小朋友,A1-X1+X2=ave -> X2=ave-A1+X1 = X1-C1(假设C1=A1-ave,下⾯类似)
对于第2个小朋友,A2-X2+X3=ave -> X3=ave-A2+X2=2ave-A1-A2+X1=X1-C2
对于第3个小朋友,A3-X3+X4=ave -> X4=ave-A3+X3=3ave-A1-A2-A3+X1=X1-C3
Code
#include <bits/stdc++.h>
#define F(i,a,b) for (int i = a; i <= b; i ++)
const int N = 1e6 + 10;
using namespace std;
int n, x, a[N];
long long ans;
int main() {
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
scanf("%d", &n);
F(i, 1, n) scanf("%d", &x), a[x] ++;
F(i, 1, n) a[i] += a[i - 1] - 1;
sort(a + 1, a + n + 1);
F(i, 1, n) ans = ans + fabs(a[i] - a[n + 1 >> 1]);
printf("%lld\n", ans);
}