仓库的位置就是该序列中的中位数的位置。
#include<bits/stdc++.h>
using namespace std;
const int nn=100010;
int n;
int a[nn];
int x;
int ans=0;
inline int read()
{
int x=0,f=1; char ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
int main()
{
n=read();
for(int i=1;i<=n;++i)
a[i]=read();
sort(a+1,a+n+1);
if(n%2==0) x=(a[n/2]+a[n/2+1])/2;
else x=a[n/2+1];
for(int i=1;i<=n;++i)
ans+=abs(a[i]-x);
printf("%d\n",ans);
return 0;
}