Submission #763366

#TimeUsernameProblemLanguageResultExecution timeMemory
763366boris_mihov쌀 창고 (IOI11_ricehub)C++17
100 / 100
11 ms2900 KiB
#include "ricehub.h" #include <algorithm> #include <iostream> #include <numeric> #include <cassert> #include <vector> typedef long long llong; const int MAXN = 100000 + 10; const int INF = 1e9; int n; llong b; int a[MAXN]; llong prefix[MAXN]; bool check(int needed) { for (int i = 1 ; i + needed - 1 <= n ; ++i) { llong currCost = 0; int med = (i + i + needed - 1) / 2; currCost += 1LL * (med - i + 1) * a[med] - (prefix[med] - prefix[i - 1]); currCost += (prefix[i + needed - 1] - prefix[med]) - 1LL * (i + needed - 1 - med) * a[med]; if (currCost <= b) return true; } return false; } int besthub(int N, int L, int X[], long long B) { n = N; for (int i = 0 ; i < n ; ++i) { a[i + 1] = X[i]; prefix[i + 1] = prefix[i] + X[i]; } b = B; int l = 0, r = n + 1, mid; while (l < r - 1) { mid = (l + r) / 2; if (check(mid)) l = mid; else r = mid; } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...