修井
Input
Output
Sample Input
Sample Output
解题思路:如果有两户,井修在这两户中间任何一处即可,距离之和就是坐标轴大的减小的。如果有n户,井修在最内层的两户的任意一处即可。因此将户从小到大排序,若户数为偶数,则从两端向中间层层计算,最右端减最左端累加求和;若户数为奇数,则井修在排序后最中间的位置,最中间的户也是井的位置,因此不用考虑最中间的,计算和偶数情况一样。
AC代码:
#include<iostream>
#include<algorithm>//头文件
using namespace std;
int main()
{
int n;
long long sum=0;//不定义为long long会Wrong Answer
cin>>n;
long long a[n+1];
for(int i=1; i<=n; i++)
cin>>a[i];
sort(a+1,a+n+1);//由小到大排序 排序函数
for(int i=1;i<=n/2;i++)
sum=sum+a[n+1-i]-a[i];
cout<<sum<<endl;
return 0;
}
其实该题仔细思考思考,没有难度,可以算是规律题或者说是常识题。
永远相信美好🎈