中规中矩
#include<iostream>
#include<algorithm>
using namespace std;
int n,w,a[100010];
long long ans;
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n);
w=a[n/2];
for(int i=0;i<n;i++)ans+=abs(a[i]-w);
printf("%lld",ans);
}
下面有玄学
每次算自己到达前一半距离也是可以的
#include<iostream>
#include<algorithm>
using namespace std;
int n,w,a[100010];
long long ans;
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n);
for(int i=0;i<n;i++)ans+=abs(a[i]-a[i/2]);//每次算到达自己索引一半的距离也可以
printf("%lld",ans);
}
希望有大神给出证明过程