Submission #1328687

#TimeUsernameProblemLanguageResultExecution timeMemory
1328687Mamikonm1Rice Hub (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;
      return pf[r]-(l?pf[l-1]:0);
    };
    auto ok=[&](int c1,int c2,ll s1,ll s2,ll x0)->bool{
        if(c1==c2)return 0<=B+s1-s2;
        return x0<=(B+s1-s2)/(c1-c2);
    };
    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];
            l=j+1;r=R;
            while(l+1<r){
                md=r+l>>1;
                if(ok(j-i+1,md-(j+1)+1,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,j-i+1+l-(j+1)+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...