Submission #24972

#TimeUsernameProblemLanguageResultExecution timeMemory
24972gabrielsimoesGap (APIO16_gap)C++14
64.88 / 100
76 ms4900 KiB
#include "gap.h" #include <cstdio> #include <algorithm> using namespace std; typedef long long ll; const ll MIN = 0, MAX = 1000000000000000000; void MM(ll a, ll b, ll *c, ll *d) { // printf("MinMax of %lld %lld\n", a, b); MinMax(a, b, c, d); } ll solve1(int n) { ll v[n+1]; int i = 1, k = n; ll mn = MIN, mx = MAX; while (i <= k) { MinMax(mn, mx, v+i, v+k); mn = v[i++]+1; mx = v[k--]-1; } ll ret = 1; for (int i = 1; i < n; i++) ret = max(ret, v[i+1] - v[i]); return ret; } ll solve2(int n) { ll cur, lim; MM(MIN, MAX, &cur, &lim); ll ans = 1, test, l, r; while (cur < lim) { test = ans + 2; do { MM(cur+1, cur+test, &l, &r); test = test*2; } while (l == -1); ans = max(ans, l - cur); cur = r; } return ans; } ll findGap(int t, int n) { return (t == 1 || n <= 8) ? solve1(n) : solve2(n); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...