Submission #1083412

#TimeUsernameProblemLanguageResultExecution timeMemory
1083412djs100201Gap (APIO16_gap)C++17
100 / 100
35 ms2360 KiB
#include "gap.h" #include <bits/stdc++.h> #define all(v) v.begin(), v.end() using namespace std; using ll = long long; using P = pair<ll, ll>; using PP = pair<ll, P>; const ll n_ = 2e5 + 10, inf = (ll)2e9 * (ll)1e9 + 7, mod = 998244353; ll n, m, tc = 1, a, b, c, d, sum, x, y, z, base, ans, k; ll findGap(int T, int N) { if (T == 1) { vector<ll> res(N); ll l = 0, r = 1e18, mn, mx, lidx = 0, ridx = N - 1; for (int i = 0; i < (N + 1) / 2; i++) { MinMax(l, r, &mn, &mx); res[lidx++] = mn, res[ridx--] = mx; l = mn + 1, r = mx - 1; } ll ret = 0; for (int i = 1; i < N; i++) ret = max(ret, res[i] - res[i - 1]); return ret; } else { ll l = 0, r = 1e18, ret = 0, mn, mx; MinMax(l, r, &mn, &mx); r = mx; ll gap = mx - mn, new_gap = gap / N; ret = new_gap; vector<ll> R; R.push_back(mn); ll x = mn; while (1) { MinMax(x + 1, x + ret + 1, &mn, &mx); if (mx == -1) { x += ret + 1; } else { ret = max(ret, mn - R.back()); x = mx; R.push_back(mx); } if (x == r) break; } return ret; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...