https://vijos.org/p/1691
管道尽量在中间,即求中位数,要分奇偶两种情况:
奇数:第n/2个
偶数:第(n+1)/2个
此题的x并无用处,最后将所有油田距离管道的距离加起来就行了。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cstdlib>
#define ms(i,j) memset(i,j,sizeof(i));
using namespace std;
int a[10005];
int main()
{
int n;
scanf("%d", &n);
for (int i=0;i<n;i++) scanf("%d%d", &a[i], &a[i]);
sort(a, a+n);
int best;
if (n%2==0)
{
best = a[n/2-1];
} else best = a[(n+1)/2-1];
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += abs(best-a[i]);
}
printf("%d", sum);
return 0;
}