제출 #411670

#제출 시각아이디문제언어결과실행 시간메모리
411670A_D쌀 창고 (IOI11_ricehub)C++14
17 / 100
22 ms2244 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const LL NN=1e5+100;
LL a[NN];
LL pre[NN];
LL n,b;
bool ok(LL mid)
{
    LL l=1,r=mid,me=0;
    while(r<=n){
        LL avg=(pre[r]-pre[l-1])/mid;
        while(a[me+1]<=avg&&me<n){
            me++;
        }
        LL ret=a[me]*(me-l+1)-(pre[me]-pre[l-1]);
        ret+=(pre[r]-pre[me])-a[me]*(r-me);
        if(ret<=b)return 1;
        me++;
        ret=a[me]*(me-l+1)-(pre[me]-pre[l-1]);
        ret+=(pre[r]-pre[me])-a[me]*(r-me);
        if(ret<=b)return 1;
        l++;
        r++;
    }
    return 0;
}
int besthub(int R, int L, int X[], long long B)
{
    n=R;
    b=B;
    for(LL i=0;i<R;i++)a[i+1]=X[i];
    sort(a+1,a+n+1);
    for(LL i=1;i<=n;i++)pre[i]=pre[i-1]+a[i];
    LL l=1,r=n,ans=0;
    while(l<=r){
//        cout<<5<<endl;
        LL mid=(l+r)/2;
        if(ok(mid)){
            l=mid+1;
            ans=mid;
        }
        else r=mid-1;
    }
    int ann=ans;
    return ann;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...