Submission #80562

#TimeUsernameProblemLanguageResultExecution timeMemory
80562arman_ferdous쌀 창고 (IOI11_ricehub)C++17
17 / 100
261 ms3988 KiB
#include <bits/stdc++.h> #include "ricehub.h" using namespace std; typedef long long ll; const int N = 1e5+10; int n; ll arr[N], sum[N], cap; ll calc(ll i, ll j, ll x) { ll p = lower_bound(arr,arr+n,x) - arr; p++; ll ret = x * (p - i) - (sum[p-1] - sum[i-1]); ret = ret + sum[j] - sum[p-1] - x * (j - p + 1); return ret; } bool can(int k) { for(int i = k; i <= n; i++) { ll med = (sum[i] - sum[i-k]) / k; for(ll m = med-5; m <= med+5; m++) if(calc(i-k+1,i,m) <= cap) return true; } return false; } int besthub(int R, int L, int X[], ll B) { n = R, cap = B; sum[0] = 0; for(int i = 0; i < R; i++) arr[i] = X[i]; for(int i = 1; i <= R; i++) sum[i] = sum[i-1] + X[i-1]; int lo = 1, hi = R, ret = 0; while(lo <= hi) { int mid = (lo + hi) >> 1; if(can(mid)) ret = mid, lo = mid+1; else hi = mid-1; } return ret; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...