| 比赛 |
果蝇王邀请赛div2 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
| 题目名称 |
果蝇诱饵 |
最终得分 |
100 |
| 用户昵称 |
exil |
运行时间 |
1.366 s |
| 代码语言 |
C++ |
内存使用 |
5.18 MiB |
| 提交时间 |
2026-08-27 10:04:37 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[200005];
int b[200005];
bool cmp(int aa,int bb){
return aa>bb;
}
signed main(){
freopen("fly.in","r",stdin);
freopen("fly.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
while(T--){
int n,m,L;
cin>>n>>m>>L;
for(int i = 1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int l=a[1],r=a[n];
for(int i = 1;i<n;i++){
b[i]=a[i+1]-a[i];
}
sort(b+1,b+n,cmp);
int ans=0;
if(abs(l-0)>abs(L-r)){
ans+=abs(l-0);
ans+=(abs(l-0)+abs(L-r))*(m-1);
}
else{
ans+=abs(L-r);
ans+=(abs(l-0)+abs(L-r))*(m-1);
}
//cout<<ans<<endl;
int wei=0;
for(int i = 1;i<n;i++){
l+=b[i]/2,r-=b[i]/2;
wei+=b[i]/2;
if((m-i)==0){
ans=max(ans,wei);
break;
}
if(abs(l-0)>abs(L-r)){
ans=max(ans,wei+abs(l-0)+(abs(l-0)+abs(L-r))*(m-i-1));
}
else ans=max(ans,wei+abs(L-r)+(abs(l-0)+abs(L-r))*(m-i-1));
}
cout<<ans<<"\n";
}
return 0;
}