Submission #953234

#TimeUsernameProblemLanguageResultExecution timeMemory
953234n3rm1nGap (APIO16_gap)C++17
30 / 100
42 ms3452 KiB
#include<bits/stdc++.h> #include "gap.h" using namespace std; const long long MAXN = 2e5 + 10; long long a[MAXN]; long long findGap(int T, int N) { if(T == 1) { long long s = 0, t = (long long)(1e18); long long mn, mx; long long n = N; long long filled0 = 0, filled1 = n+1; while(filled0 + 1 <= filled1 - 1) { MinMax(s, t, &mn, &mx); if(mn == mx) { filled0 ++; a[filled0] = mn; n --; break; } filled0 ++; filled1 --; n-= 2; a[filled0] = mn; a[filled1] = mx; s = mn + 1; t = mx - 1; } long long ans = -1; for (long long i = 2; i <= N; ++ i) ans = max(ans, (long long) (a[i] - a[i-1])); return ans; } long long n = N; long long s = 0, t = (long long)(1e18); long long mn, mx; long long range_l = 0, range_r; long long l; MinMax(s, t, &mn, &mx); range_l = mn; range_r = mx; l = range_r - range_l + 1; long long x = (l + n - 1)/n; //if(x * (n-1) < l)x ++; long long last = range_l, cache = 0; long long st = last; long long ans = 0; while(last < range_r) { s = last + 1; t = last + x + 1; MinMax(s, t, &mn, &mx); if(mx != -1 && mn > last && (mn >= s && mn <= t) && (mx >= s && mx <= t)) { ans = max(ans, mn - st); st = mx; } else { cache += x; last = last + x + 1; } last += x; } return ans; } /** 2 5 2 3 7 17 19 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...