제출 #481759

#제출 시각아이디문제언어결과실행 시간메모리
481759uHyHnRice Hub (IOI11_ricehub)C++14
0 / 100
6 ms588 KiB
#include<bits/stdc++.h> //IBOW #define Task "RiceHub" #define DB(X) { cerr << #X << " = " << (X) << '\n'; } #define DB1(A, _) { cerr << #A << "[" << _ << "] = " << (A[_]) << '\n'; } #define DB2(A, _, __) { cerr << #A << "[" << _ << "][" << __ << "] = " << (A[_][__]) << '\n'; } #define DB3(A, _, __, ___) { cerr << #A << "[" << _ << "][" << __ << "][" << ___ << "] = " << (A[_][__][___]) << '\n'; } #define pb push_back #define F first #define S second #define all(x) (x).begin(), (x).end() #define sz(x) (int)(x).size() #define eb emplace_back using namespace std; typedef long long ll; typedef pair<int, int> ii; typedef pair<ii, int> iii; const int N = 2e5 + 10; const int inf = 2e9 + 10; const ll INF = 2e18 + 10; const int MOD = 1e9 + 7; int pre[N]; bool ok(int va, int n, int L, int x[], ll B) { int mn = inf; for (int i = va; i <= n; ++i) { int tv = (pre[i] - pre[i - va]) / va + ((pre[i] - pre[i - va]) % va > 0); int pos = upper_bound(x + i - va + 2, x + i + 1, tv) - x - 1; mn = min(mn, (tv * (pos - i + va) - pre[pos] + pre[i - va]) + (pre[i] - pre[pos] - tv * (i - pos))); } return mn <= B; } int besthub(int n, int L, int x[], long long B) { cin >> n >> L >> B; for (int i = 1; i <= n; ++i) pre[i] = pre[i - 1] + x[i]; int l = 1, R = 1e9, ans = -1; while (l <= R) { int mid = (l + R) / 2; if (ok(mid, n, L, x, B)) l = mid + 1, ans = mid; else R = mid - 1; } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...