BZOJ 1045 糖果传递

时间:2023-03-09 13:27:32
BZOJ 1045 糖果传递

奇怪的式子。最后发现取中位数。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#define maxn 1000500
using namespace std;
long long n,a[maxn],c[maxn],x1,sum[maxn],ans=,ave;
int main()
{
scanf("%lld",&n);
for (long long i=;i<=n;i++)
{
scanf("%lld",&a[i]);
sum[i]=sum[i-]+a[i];
}
ave=sum[n]/n;
for (long long i=;i<=n;i++) c[i]=(i-)*ave-(sum[i]-sum[]);
sort(c+,c+n+);
x1=c[n/+];
for (long long i=;i<=n;i++) ans+=abs(x1-c[i]);
printf("%lld\n",ans);
return ;
}