Submission

Status:

--------xxxxxxxxxxxx

Score: 0

User: a0ms1n

Problemset: Abacus

Language: cpp

Time: 0.717 second

Submitted On: 2025-04-23 00:29:08

#include <bits/stdc++.h>
using namespace std;
#define int long long

int n,k;
int arr[(int)2e3+1];

int area(int x){
    if(x<=0)return 0;
    if(x&1)return ((x+1)*(x+1))/4;
    else return ((x/2)*(x/2+1));
}

bool cando(int t){
    int sum = 0;
    for(int i=0;i<n;i++){
        sum += area(2*t+1);
        if(i==n-1)continue;
        int di = arr[i]+t;
        int dj = arr[i+1]-t;
        if(di<dj)continue;
        sum -= area(di-dj+1);
    }
    return sum>=k;
}

signed main(){
    cin>>n>>k;
    
    for(int i=0;i<n;i++)cin>>arr[i];
    sort(arr,arr+n);
    int l=0,r=min(k,(int)1e9);
    for(int b=r/2;b>0;b>>=1ll){
        while(r-b>=l && cando(r-b))r-=b;
    }
    cout<<r;


    return 0;
}