比赛 果蝇王邀请赛div2 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 果蝇诱饵 最终得分 100
用户昵称 123 运行时间 1.460 s
代码语言 C++ 内存使用 4.31 MiB
提交时间 2026-08-27 09:31:49
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=3e5+10,M=6e6+10;
int n,k,l,a[N];
priority_queue<int> q;
long long get(int x,int y)
{
    return max(x,y)+1ll*(k-1)*(x+y);
}
void solve() {
    cin>>n>>k>>l;
    for (int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);
    for (int i=2;i<=n;i++) q.push(a[i]-a[i-1]); 
    int nowl=a[1],nowr=a[n],len=min(n-1,k);
    long long ans=0,cnt=0;
    for (int i=0;i<=len;i++)
    {
        if (k==0) ans=max(ans,cnt);
        else ans=max(ans,cnt+get(nowl,l-nowr));
        if (!q.empty())
        {
            int t=q.top();q.pop();
            k--;
            nowl+=t/2,nowr-=t/2,cnt+=t/2;
        }
    }
    cout<<ans<<"\n";
}
int main() {
    freopen("fly.in","r",stdin);
    freopen("fly.out","w",stdout); 
    ios::sync_with_stdio(0),cin.tie(0);
    int t;
    cin>>t;
    while (t--) solve();
    return 0; 
}