제출 #234959

#제출 시각아이디문제언어결과실행 시간메모리
234959Nodir_BobievRice Hub (IOI11_ricehub)C++17
0 / 100
8 ms768 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( mid*1ll*(ll-l+1)-(sumL[ll]-sumL[l-1])+ (sumR[ll]-sumR[r+1])-mid*1ll*(r-ll+1) <= B ) t = true; if( mid < X[r-1] && (mid+1)*1ll*(ll-l+1)-(sumL[ll]-sumL[l-1])+ (sumR[ll]-sumR[r+1])-(mid+1)*1ll*(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...