| 比赛 |
果蝇王邀请赛div2 |
评测结果 |
WWWWWWWWWWWWWWWWWWWW |
| 题目名称 |
果蝇诱饵 |
最终得分 |
0 |
| 用户昵称 |
Ruyi |
运行时间 |
1.889 s |
| 代码语言 |
C++ |
内存使用 |
4.63 MiB |
| 提交时间 |
2026-08-27 12:52:33 |
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define N 200001
using namespace std;
ll t,n,k,l,lt,rt;
double a[N],ans;
int main(){
freopen("fly.in","r",stdin);
freopen("fly.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--){
cin>>n>>k>>l;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
lt=1;
rt=n;
while(lt<rt&&k>0){
k--;
if(a[lt+1]-a[lt]>=max(a[lt],l-a[rt])*2){
if(a[lt+1]-a[lt]>=a[rt]-a[rt-1]){
ans+=a[lt+1]-(a[lt+1]+a[lt])/2;
a[lt]=a[lt+1]=(a[lt+1]+a[lt])/2;
lt++;
}else{
ans+=a[rt]-(a[rt]+a[rt-1])/2;
a[rt-1]=a[rt]=(a[rt]+a[rt-1])/2;
rt--;
}
}else if(a[rt]-a[rt-1]>=max(a[lt],l-a[rt])*2){
ans+=a[rt]-(a[rt]+a[rt-1])/2;
a[rt-1]=a[rt]=(a[rt]+a[rt-1])/2;
rt--;
}else break;
}
ans+=(k-(k%2))*(l+a[lt]);
if(k%2) ans+=max(a[lt],l-a[rt]);
cout<<ans<<endl;
ans=0;
}
return 0;
}