比赛 果蝇王邀请赛div2 评测结果 AWAAAAAAAAAAAAAAAAAA
题目名称 果蝇诱饵 最终得分 95
用户昵称 __0w0__ 运行时间 1.548 s
代码语言 C++ 内存使用 4.46 MiB
提交时间 2026-08-27 10:22:02
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int a[200001];
int n,k,l,t;
int main(){
    freopen("fly.in","r",stdin);
    freopen("fly.out","w",stdout);
    cin>>t;
    while(t--){//O(nlogn)
        scanf("%d%d%d",&n,&k,&l);
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        long long ans=1ll*max(l-a[n],a[1])+1ll*(k-1)*(l-a[n]+a[1]),res=0,rr=0;
        int js;
        priority_queue<int>q;
        for(int i=2;i<=n;i++){
            q.push(a[i]-a[i-1]>>1);
        }
        for(int i=1;i<n&&i<k;i++){
            rr+=q.top();
            res=rr;
            a[n]-=q.top();
            a[1]+=q.top();
            q.pop();
            res+=1ll*max(l-a[n],a[1])+1ll*(k-i-1)*(l-a[n]+a[1]);
            if(ans<res){
                ans=res;
                js=i;
//                cout<<max(l-a[n],a[1])<<" and "<<1ll*(k-i-1)*(l-a[n]+a[1])<<":::\n";
                
            }
        }
        cout<<ans<<'\n';
//        cout<<ans<<' '<<js<<'\n'; 
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}
/*
3
2 2 20
4 18
8 9 14
0 2 4 6 8 10 12 14
3 3 140
120 70 20
*/