#include "ricehub.h"
#include<bits/stdc++.h>
using namespace std;
long long pre[100005];
long long suf[100005];
int n;
long long ar[100005];
long long mxx=0;
long long cost(int m){
    long long ans=LLONG_MAX;
    for(int i=1;i+m-1<=n;i++){
        long long l=i,r=i+m-1;
        long long md=(l+r)/2;
        long long cst=pre[r]-pre[md-1]-ar[md]*(r-md+1) + suf[l]-suf[md+1]-(mxx-ar[md])*(md-l+1);
        ans=min(ans,cst);
    }
    return ans;
}
int besthub(int R, int L, int X[], long long B)
{
    mxx=L;
    for(int i=0;i<=R;i++)suf[i]=pre[i]=ar[i]=0;
    n=R;
    for(int i=1;i<=n;i++){
        pre[i]=pre[i-1]+X[i-1];
        //cerr<<pre[i]<<" ";
    }
    //cerr<<"\n";
    for(int i=n;i>=1;i--){
        suf[i]=suf[i+1]+L-X[i-1];
        //cerr<<suf[i]<<" ";
    }
    //cerr<<"\n";
    for(int i=1;i<=n;i++)ar[i]=X[i-1];
    int st=1,en=R,ans=0;
    while(st<=en){
        int m=(st+en)/2;
        long long x=cost(m);
        //cerr<<m<<" "<<x<<"\n";
        if(x<=B){
            st=m+1;
            ans=m;
        }else{
            en=m-1;
        }
    }
    return ans;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |