(阶段四1.3)UVA 11300 Spreading the Wealth(利用中位数来解决求某一个点到给定的n个点的距离的最小值)

来源:互联网 发布:苏州软件外包公司 编辑:程序博客网 时间:2024/05/29 17:58
/* * UVA_11300.cpp * *  Created on: 2013年11月17日 *      Author: Administrator */#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;const int maxn = 1000010;long long  a[maxn];long long  c[maxn];long long m;long long sum;long long x ;long long ans;int main(){int n;while(scanf("%d",&n)!=EOF){int i;sum = 0;for(i = 1 ; i <= n ; ++i){scanf("%lld",&a[i]);//初始金币sum += a[i];}m = sum/n;c[0] = 0;for(i = 1 ; i < n ; ++i){//求每个人实际给出的金币c[i] = c[i-1] + a[i] - m;}sort(c,c+n);x = c[n/2];ans = 0;for(i = 0 ; i < n ;++i){ans += abs(x - c[i] + 0.0);}printf("%lld\n",ans);//cout<<ans<<endl;}return 0;}

原创粉丝点击