Submission #481437

#TimeUsernameProblemLanguageResultExecution timeMemory
481437Mihai_EduardRice Hub (IOI11_ricehub)C++14
100 / 100
15 ms2380 KiB
bool verify(long long sum[], int r, int l, int x[], long long b, int nr)
{
    int st, dr, mij;
    long long total;
    for(int i=1;i<=r-nr+1;i++)
    {
        st=i;
        dr=i+nr-1;
        mij=(st+dr)/2;
        total=0;
        total=total+x[mij-1]*(mij-st);
        total=total-(sum[mij-1]-sum[st-1]);
        total=total+(sum[dr]-sum[mij]);
        total=total-x[mij-1]*(dr-mij);

        if(total<=b)
            return true;
    }
    return false;
}

int besthub(int r, int l, int x[], long long b)
{
    long long sum[100005]={};
    sum[0]=0;
    for(int i=1;i<=r;i++)
        sum[i]=sum[i-1]+x[i-1];
    int st=1, dr=r+1, mij;
    while(dr-st>1)
    {
        mij=(st+dr)/2;
        if(verify(sum,r,l,x,b,mij))
            st=mij;
        else
            dr=mij;
    }
    return st;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...