Submission #47280

#TimeUsernameProblemLanguageResultExecution timeMemory
47280TalantGap (APIO16_gap)C++17
30 / 100
106 ms7016 KiB
#include <bits/stdc++.h> #include "gap.h" //#include "grader.cpp" using namespace std; const long long M = (1e6 + 5); long long ans = 0; long long a[M]; long long l,r = 1e18; long long ll,rr; set<long long> st; void f (long long mn,long long mx) { if (mn != -1) st.insert(mn); if (mx != -1) st.insert(mx); if (mn >= mx) return; long long m = (mn + mx) >> 1; if (mn + 1 <= m) { long long l = 0,r = 0; MinMax(mn + 1,m,&l,&r); f(l,r); } if (m + 1 <= mx - 1) { long long l = 0,r = 0; MinMax(m + 1,mx - 1,&l,&r); f(l,r); } } long long findGap(int T, int N) { if (T == 1) { long long o = (N + 1) / 2; ll = 1,rr = N; while (o --) { MinMax(l,r,&a[ll],&a[rr]); l = a[ll] + 1,r = a[rr] - 1; ll ++,rr --; } for (long long i = 1; i < N; i ++) ans = max(ans,a[i + 1] - a[i]); return ans; } else { long long l = 0,r = 0; MinMax(0,1e18,&l,&r); f(l,r); for (auto to : st) { a[ll] = to; ll ++; } for (long long i = 1; i < N; i ++) ans = max(ans,a[i + 1] - a[i]); return ans; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...