General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
106986131 Practice:
bppsrayan
1244E - 10 C++17 (GCC 7-32) Wrong answer on test 8 1138 ms 1660 KB 2021-02-09 16:21:12 2021-02-09 16:21:12
→ Source
#include<bits/stdc++.h>
using namespace std;

void solve(){
    long long int n,k;
    cin>>n>>k;
    vector<long long int>arr(n);
    for(long long int i=0;i<n;i++){
        cin>>arr[i];
    }

    sort(arr.begin(),arr.end());
    long long int sol=arr[n-1]-arr[0];
    vector<long long int> la(n), ra(n);
    la[0]=0;
    for(long long int i=1;i<n;i++){
        la[i]= la[i-1]+(arr[i]-arr[i-1])*i;
    }
    ra[n-1]=0;
    for(long long int i=n-2;i>=0;i--){
        ra[i]=ra[i+1]+(arr[i+1]-arr[i])*(n-1-i);
    }

    long long int left=0, right;
    long long int mn=arr[n-1]-arr[0];
    while(left<n && k-la[left]>=0){
        long long int kk=k;
        kk=kk-la[left];
        right=left;
        while(right<n){
            if(kk-ra[right]<0){
                right++;
            }
            else{
                kk=kk-ra[right];
                break;
            }
        }

        if(kk==0 || (kk>0 && left==right)){
            mn=min(mn,arr[right]-arr[left]);
        }
        else if(kk>0 && left<right){
            long long int i,j;
            if(left<n-1-right){
                i=kk/(left+1);
                if(arr[left]+i<arr[left+1] && arr[left]+i<arr[right]){
                    mn=min(mn,arr[right]-arr[left]-i);
                }
            }
            else{
                j=kk/(n-right);
                if(arr[right]-j>arr[right-1] && arr[right]-j>arr[left]){
                    mn=min(mn,arr[right]-arr[left]-j);
                }
            }
        }
        left++;
    }
    cout<<mn;
}

int main(){
    solve();
    return 0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details