Submission #406924

#TimeUsernameProblemLanguageResultExecution timeMemory
406924SeDunionGap (APIO16_gap)C++17
40.31 / 100
328 ms2740 KiB
#include "gap.h" #include<bits/stdc++.h> using namespace std; using ll = long long; ll Answer(vector<ll>a) { int N = a.size(); ll answer = 0; for (int i = 0 ; i < N - 1 ; ++ i) answer = max(answer, a[i + 1] - a[i]); return answer; } ll solve1(int N) { ll L = -1, R = ll(1e18)+1; vector<ll>a(N); int l = 0, r = N - 1; while (l <= r) { MinMax(L+1, R-1, &L, &R); a[l++] = L, a[r--] = R; } return Answer(a); } vector<ll>a; void solve(ll L, ll R) { if (L > R) return; ll M = (L + R) / 2; ll X; MinMax(L, M, &L, &X); if (L == -1 && X == -1) { solve(M + 1, R); return; } if (L == X) { a.emplace_back(L); solve(M + 1, R); return; } a.emplace_back(L); a.emplace_back(X); solve(L + 1, X - 1); solve(M + 1, R); } ll solve2(int N) { ll L, R; MinMax(0, ll(1e18), &L, &R); a.emplace_back(L); a.emplace_back(R); solve(L + 1, R - 1); sort(a.begin(), a.end()); assert((int)a.size() == N); return Answer(a); } ll findGap(int T, int N) { if (T == 1) { return solve1(N); } else { return solve2(N); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...