제출 #234953

#제출 시각아이디문제언어결과실행 시간메모리
234953Nodir_Bobiev쌀 창고 (IOI11_ricehub)C++17
17 / 100
33 ms3328 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; int besthub(int R, int L, int X[], long long B) { int ans = 0; long long sumL[R+2]={}, sumR[R+2]={}; for( int i = 1; i <= R; i ++ ){ sumL[i] = sumL[i-1] + X[i-1]; } for( int i = R; i >= 1; i -- ){ sumR[i] = sumR[i+1] + X[i-1]; } int l = 1, r = 1; while( r <= R ){ //cout << l << ' '<< r << endl; long long mid = (sumL[r]-sumL[l-1])/(r-l+1); int ll = l, rr = r+1; while( rr-ll>1 ){ int mm=(ll+rr)>>1; if(X[mm-1]>mid) rr = mm; else ll = mm; } bool t = false; if( X[ll-1]*(ll-l+1)-(sumL[ll]-sumL[l-1])+ (sumR[ll]-sumR[r+1])-X[ll-1]*(r-ll+1) <= B ) t = true; if( ++ll <= r && X[ll-1]*(ll-l+1)-(sumL[ll]-sumL[l-1])+ (sumR[ll]-sumR[r+1])-X[ll-1]*(r-ll+1) <= B ) t = true; if( t ){ ans = max(ans, r-l+1); r++; } else l ++; } 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...