# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
719569 | 2023-04-06T09:53:49 Z | mseebacher | 쌀 창고 (IOI11_ricehub) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; int besthub(int R, int L, int x[], long long B) { vector<long long> pref(R+1,0); for(int i = 0;i<R;i++){ pref[i+1] = pref[i]+x[i]; } int ans = 0; int l = 0; int r = R-1; int len; while(l+1<r){ len = (l+r) >> 1; bool b = 0; for(int h = 0;h<R-len;h++){ int j = h+len; int mid = (i+j) >> 1; long long cost = (long long)(mid-i)*x[mid]*1LL-(pref[mid]-pref[i]) ; // Seg unten cost += (long long)(pref[j+1]-pref[mid+1])-(j-mid)*x[mid]*1LL; // seg oben if(cost <= B) { ans = max(ans,j-i+1); b = 1; } } if(b) l = len+1; else r = len-1; } return ans; }