#include<bits/stdc++.h>
#define N 5000009
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef long long ll;
inline ll read(){
ll x=0,f=1;char c=getchar();
while(!isdigit(c)){if(c=='-') f*=-1;c=getchar();}
while(isdigit(c)){x=x*10+(c^48);c=getchar();}
return x*f;
}
ll n,a[N],b[N],ans,tot;
ll Abs(ll x){return x>0?x:-x;}
int main(){
n=read();
for(int i=1;i<=n;i++) a[i]=read(),tot+=a[i];
tot/=n;
for(int i=1;i<=n;i++) b[i]=b[i-1]+(a[i]-tot);
sort(b+1,b+n+1);
for(int i=1;i<=n;i++) ans+=Abs(b[n/2]-b[i]);
printf("%lld\n",ans);
return 0;
}
显然的这份代码是错误的,中位数应当是(n+1)>>1 而不是n/2,但是这份代码却可以通过这道题目,故请求加强数据。
如果有合适的数据/data maker的话我会在此帖下回复。