제출 #1328694

#제출 시각아이디문제언어결과실행 시간메모리
1328694Mamikonm1쌀 창고 (IOI11_ricehub)C++17
0 / 100
0 ms344 KiB
#include "ricehub.h"
#include<bits//stdc++.h>
using namespace std;
using ll = long long;
int besthub(int R, int L, int X[], long long B)
{
    vector<ll>pf(R);
    pf[0]=X[0];
    int ans=0;
    for(int i=1;i<R;++i)pf[i]=pf[i-1]+X[i];
    auto sum=[&](int l,int r)->ll{
      if(l>r)return 0;
      if(r>=R)return 0;
      return pf[r]-(l?pf[l-1]:0);
    };
    auto ok=[&](int c1,int c2,ll s1,ll s2,ll x0)->bool{
        return x0*(c1-c2)<=B+s1-s2;
    };
    int l,r,md;
    ll sm1;
    for(int i=0;i<R;++i){
        sm1=0;
        for(int j=i;j<R;++j){
            sm1+=X[j];
            if((j-i+1)*1ll*X[j]-sm1<=B)ans=max(ans,j-i+1);
            if(j==R){
                continue;
            }
            l=j+1;r=R;
            while(l+1<r){
                md=r+l>>1;
                if(ok(j-i+1,md-j,sm1,sum(j+1,md),X[j]))l=md;
                else r=md;
            }
            if(ok(j-i+1,l-(j+1)+1,sm1,sum(j+1,l),X[j]))ans=max(ans,l-i+1);
        }
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...