题解:CF2157D Billion Players Game
提供一种单组数据
先把绝对值去掉,这样每个下注建议就是在
若选择
将
要求的答案即
考虑让斜率
于是可以将
发现前一半的
#include<bits/stdc++.h>
#define N 200005
using namespace std;
int n,l,r,a[N];
int main(){
int T;scanf("%d",&T);
while(T--){
long long ans=0;
scanf("%d%d%d",&n,&l,&r);
for(int i=1;i<=n;i++) scanf("%d",a+i);
nth_element(a+1,a+(n+1>>1),a+n+1);
int x=a[n+1>>1];x=max(x,l),x=min(x,r);
for(int i=1;i<=n;i++) ans+=abs(a[i]-x);
printf("%lld\n",ans);
}
return 0;
}