修井
作者:互联网
修井
- 一条笔直的公路沿线有N家住户,由于常年用水不便,现在地方政府决定出资修一口水井解决这个难题。工作人员将公路的某点设为0点,这样N家住户分别位于A1~An点处。请你帮助他们找到适当的修井位置,使得各家到井的距离之和最短,并求出这个最短距离。
Input
第一行输出住户数N,其中2≤N≤10000; 第2~N+1行共N个数,表示住户位置Ai,其中-109≤Ai≤109
Output
输出一个数,表示这个最短距离
Sample Input
5
-1
-3
0
7
9
Sample Output
20
分析: 如果是奇数个住户,井修在最中间路程最短,如果是偶数个选取中间两点的平均数即可。
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
using namespace std;
int main()
{
int n,i;
long long int x,sum=0;
long long int a[10001];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%I64d",&a[i]);
}
sort(a,a+n);
if(n%2!=0)
{
x=a[n/2];
}
else
{
x=(a[n/2]+a[n/2-1])/2;
}
for(i=0;i<n;i++)
sum+=abs(a[i]-x);
printf("%I64d\n",sum);
return 0;
}
酷毙少男
发布了47 篇原创文章 · 获赞 0 · 访问量 1332
私信
关注
标签:int,long,109,住户,include,修井 来源: https://blog.csdn.net/weixin_43614026/article/details/104578150