Submission #763701

#TimeUsernameProblemLanguageResultExecution timeMemory
763701gun_ganRice Hub (IOI11_ricehub)C++17
100 / 100
14 ms2136 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MX = 1e5 + 5; ll N, L, B; int x[MX]; bool can(int k) { if(k & 1) { ll cur = 0; for(int i = 0; i < k / 2; i++) cur -= x[i]; for(int i = k / 2 + 1; i < k; i++) cur += x[i]; if(cur <= B) return 1; for(int i = k; i < N; i++) { // add i cur += x[i]; // remove i - k cur += x[i - k]; // add cur -= x[i - k + k / 2]; // remove cur -= x[i - k + k / 2 + 1]; if(cur <= B) return 1; } return 0; } else { ll cur = 0; for(int i = 0; i < k / 2; i++) cur -= x[i]; for(int i = k / 2; i < k; i++) cur += x[i]; if(cur <= B) return 1; for(int i = k; i < N; i++) { // add i cur += x[i]; // remove i - k cur += x[i - k]; // add cur -= x[i - k + k / 2]; // remove cur -= x[i - k + k / 2]; if(cur <= B) return 1; } return 0; } } int besthub(int _N, int _L, int _x[], ll _B) { N = _N, L = _L, B = _B; for(int i = 0; i < N; i++) x[i] = _x[i]; int l = 1, r = N, res = 0; while(l <= r) { int mid = (l + r) >> 1; if(can(mid)) { l = mid + 1, res = mid; } else { r = mid - 1; } } return res; } // int a[100]; // int main() { // ios_base::sync_with_stdio(0); cin.tie(0); // int N, L, B; // cin >> N >> L >> B; // for(int i = 0; i < N; i++) cin >> a[i]; // cout << besthub(N, L, a, B) << '\n'; // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...