Submission #106952

#TimeUsernameProblemLanguageResultExecution timeMemory
106952kekGap (APIO16_gap)C++14
42.89 / 100
120 ms3828 KiB
#include "gap.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; // #define int ll #define all(v) v.begin(), v.end() #define len(v) ((int)(v).size()) #define pb push_back #define kek pop_back #define pii pair<int, int> #define mp make_pair #define debug(x) cout << #x << " = " << x << endl; const int INF = 1e9 + 666; template<class t1, class t2> bool cmin(t1 &a, const t2 &b) { if (a > b) { a = b; return true; } return false; } template<class t1, class t2> bool cmax(t1 &a, const t2 &b) { if (a < b) { a = b; return true; } return false; } // void MinMax(ll, ll, ll*, ll*); ll firstGroup(int); ll secondGroup(int); ll calc_ans(vector<ll> a) { sort(all(a)); ll ans = 0; for (int i = 0; i + 1 < len(a); ++i) { cmax(ans, a[i + 1] - a[i]); } return ans; } ll findGap(int t, int n) { if (t == 1) { return firstGroup(n); } else { return secondGroup(n); } } ll firstGroup(int n) { vector<ll> a; ll l = 0, r = 1e18; while (len(a) < n) { MinMax(l, r, &l, &r); if (l == -1) { break; } a.pb(l); if (l != r) { a.pb(r); } ++l; --r; } return calc_ans(a); } vector<ll> restore(ll l, ll r) { if (l > r) { return {}; } MinMax(l, r, &l, &r); if (l == -1) { return {}; } if (l == r) { return {l}; } ll m = (l + r) >> 1; vector<ll> ans = {l, r}; for (auto &x : restore(l + 1, m)) { ans.pb(x); } for (auto &x : restore(m + 1, r - 1)) { ans.pb(x); } return ans; } ll secondGroup(int n) { return calc_ans(restore(0, 1e18)); } // void run(); // signed main() { // iostream::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); // run(); // } // void run() { // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...