Submission #35700

#TimeUsernameProblemLanguageResultExecution timeMemory
35700funcsrGap (APIO16_gap)C++14
100 / 100
96 ms8304 KiB
#include "gap.h" #include <iostream> #include <vector> #include <deque> #include <cassert> #include <algorithm> #include <tuple> #define rep(i, n) for (int i=0; i<(n); i++) #define all(xs) xs.begin(), xs.end() #define pb push_back using namespace std; typedef pair<long long, long long> P; P query(long long s, long long t) { long long mn, mx; MinMax(s, t, &mn, &mx); return P(mn, mx); } long long findGap(int T, int N) { if (T == 1) { long long lo = 0, hi = 1000000000000000000LL; vector<long long> fr, br; rep(_, (N+1)/2) { long long a, b; tie(a, b) = query(lo, hi); lo = a+1, hi = b-1; fr.pb(a); if (a != b) br.pb(b); } reverse(all(br)); for (long long x : br) fr.pb(x); //for (long long x: fr)cout<<x<<",";cout<<"\n"; long long m = 0; rep(i, N-1) m = max(m, fr[i+1]-fr[i]); return m; } else { long long lo, hi; tie(lo, hi) = query(0, 1000000000000000000LL); // N-2 points in [lo+1, hi-1] long long len = (hi-1)-(lo+1)+1; long long base = len/(N-1), rem = len%(N-1); vector<long long> ps; ps.pb(lo); long long l = lo+1; rep(i, N-1) { long long r = l+base-1; if (i < rem) r++; long long a, b; tie(a, b) = query(l, r); if (a != -1) ps.pb(a), ps.pb(b); l = r+1; } ps.pb(hi); assert(is_sorted(all(ps))); long long m = 0; rep(i, (int)ps.size()-1) m = max(m, ps[i+1]-ps[i]); return m; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...