# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
898739 | 2024-01-05T05:16:07 Z | Samot19 | 쌀 창고 (IOI11_ricehub) | C++14 | 0 ms | 0 KB |
#include <iostream> #include <cmath> typedef long long ll; using namespace std; bool solve(ll m, ll r, ll x[], ll b) { ll xd = 0; for(int i=0; i<m; i++) { xd+=abs(x[m/2]-x[i]); } if(xd <= b) { return true; } for(ll i = 1; i < r-m; i++) { xd-=(x[m/2+i-1]-x[i-1]); xd+=(x[m/2+i]-x[m/2+i-1])*(m/2); xd+=(x[m+i]-x[m/2+i]); xd-=(x[m/2+i]-x[m/2+i-1])*(m-m/2); if(xd <= b) return true; } return false; } ll besthub(ll r, ll l, ll x[], ll b) { ll u = 0; ll m; ll v = r; while(u < v) { m = ceil((u+v)/2.0); if(solve(m, r, x, b)) { u = m; } else { v = m-1; } } return u; }