Submission #1099531

#TimeUsernameProblemLanguageResultExecution timeMemory
1099531KasymK쌀 창고 (IOI11_ricehub)C++17
100 / 100
14 ms3092 KiB
#include "bits/stdc++.h" using namespace std; #define ff first #define ss second #define all(v) v.begin(), v.end() #define ll long long #define pb push_back #define pii pair<int, int> #define pli pair<ll, int> #define pll pair<ll, ll> #define tr(i, c) for(auto i = c.begin(); i != c.end(); ++i) #define wr puts("----------------") template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;} template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;} const int N = 1e5+5; ll par[N]; int besthub(int rr, int L, int x[], ll b){ par[0] = 0; for(int i = 1; i <= rr; ++i) par[i] = par[i-1]+x[i-1]; auto eday = [&](int s, int t) -> ll { int p = (s+t)>>1; ll wow = (p-s)*x[p]-(par[p]-par[s])+(par[t+1]-par[p+1])-(t-p)*x[p]; return wow; }; auto calc = [&](int k) -> bool { deque<int> dq; for(int i = 0; i <= k; ++i) dq.pb(i); int s = dq.front(), t = dq.back(); bool done = 0; done |= eday(s, t) <= b; for(int i = k+1; i < rr and !done; ++i) dq.pop_front(), dq.pb(i), s = dq.front(), t = dq.back(), done |= eday(s, t) <= b; return done; }; int l = 0, r = rr-1, answer = -1; while(l <= r){ int mid = (l+r)>>1; if(calc(mid)) l = mid+1, answer = mid+1; else r = mid-1; } return answer; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...