Submission #1263902

#TimeUsernameProblemLanguageResultExecution timeMemory
1263902julia_08Gap (APIO16_gap)C++20
19.72 / 100
32 ms1200 KiB
#include <bits/stdc++.h> #include "gap.h" using namespace std; using ll = long long; const int MAXN = 1e5 + 10; ll a[MAXN]; ll ans; int n; void compute(ll l, ll r){ if(r - l <= ans) return; if(l == -1) return; if(l == r){ ans = max(ans, r - l); return; } ll n_l1, n_r1, n_l2, n_r2; if(r - l == 2){ MinMax(l + 1, r - 1, &n_l1, &n_r1); if(n_l1 != -1){ ans = max({ans, r - n_l1, n_l1 - l}); } else ans = max(ans, r - l); return; } ll m = (l + r) / 2; MinMax(l + 1, m, &n_l1, &n_r1); MinMax(m + 1, r - 1, &n_l2, &n_r2); if(n_l1 == -1 && n_l2 == -1){ ans = max(ans, r - l); } else if(n_l1 == -1){ ans = max({ans, n_l2 - l, r - n_r2}); } else if(n_l2 == -1){ ans = max({ans, r - n_r1, n_l1 - l}); } else ans = max({ans, r - n_r2, n_l2 - n_r1, n_l1 - l}); compute(n_l1, n_r1); compute(n_l2, n_r2); } ll findGap(int t, int n){ ll cur_s = 0, cur_t = 1e18; ll mn, mx; MinMax(cur_s, cur_t, &mn, &mx); ans = 0; compute(mn, mx); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...