# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
953897 | 2024-03-26T20:09:38 Z | 4QT0R | 쌀 창고 (IOI11_ricehub) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; #define ll long long ll besthub(ll n, ll L, ll pos[], ll bud){ ll l,p,sm; l=p=sm=0; while(p<n-1 && sm+pos[p+1]-pos[0]<=bud){ p++; sm+=pos[p]-pos[0]; } ll mx=p+1; for (ll i = 1; i<n; i++){ sm+=(pos[i]-pos[i-1])*(i-l); sm-=(pos[i]-pos[i-1])*(p-i+1); while(sm>bud && l<i){ sm-=pos[i]-pos[l]; l++; } while(p<n-1 && sm+pos[p+1]-pos[i]<=bud){ p++; sm+=pos[p]-pos[i]; } while(l<i && p<n-1 && (pos[p+1]-pos[i])<(pos[i]-pos[l])){ sm-=pos[i]-pos[l]; l++; while(p<n-1 && sm+pos[p+1]-pos[i]<=bud){ p++; sm+=pos[p]-pos[i]; } } mx=max(mx,p-l+1); } return mx; }