比赛 果蝇王邀请赛div2 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 果蝇诱饵 最终得分 100
用户昵称 杨蕙宇 运行时间 1.422 s
代码语言 C++ 内存使用 5.80 MiB
提交时间 2026-08-27 12:43:48
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t;
ll n,k,l;
bool cmp(ll x,ll y){
    return x>y;
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    freopen("fly.in","r",stdin);
    freopen("fly.out","w",stdout);
    cin>>t;
    while(t--){
        cin>>n>>k>>l;
        vector<ll>a;
        for(int i=0;i<n;i++){
            ll x;
            cin>>x;
            a.push_back(x);
        }
        sort(a.begin(),a.end());
        vector<ll>d; 
        for(int i=0;i<n-1;i++){
            d.push_back(a[i+1]-a[i]);
        }
        ll m=d.size();
        sort(d.begin(),d.end(),cmp);
        vector<ll>pre(m+1,0);
        for(int i=0;i<m;i++)pre[i+1]=pre[i]+d[i];
        ll c=a[n-1]-a[0];
        ll s=l-c;
        ll dd=abs(a[0]+a[n-1]-l);
        ll ans=0;
        ll mxk=min(m,k);
        for(ll i=0;i<=mxk;i++){
            ll g=pre[i];
            ll val;
            if(i==k){
                val=g/2ll;
            }
            else{
                ll st=s+g;
                val=(k-1ll-i)*st+(st+g+dd)/2ll;
            }
            ans=max(ans,val);
        }
        cout<<ans<<"\n";
    }
    return 0;
}