比赛 果蝇王邀请赛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;
}