Submission #952434

#TimeUsernameProblemLanguageResultExecution timeMemory
952434n3rm1nGap (APIO16_gap)C++17
30 / 100
38 ms3708 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 - 1); /// try l / n // cout << x << endl; long long last = range_l, cache = 0; while(last < range_r) { //cout << last << endl; s = last+1; t = last + x + 1; //cout << s << " " << t << endl; MinMax(s, t, &mn, &mx); //cout << mx << "is mx " << endl; if(mx != -1 && mx > last) { if(cache) { return cache + mx - last - 1 - 1; } cache = 0; last = mx; } else { cache += x; last = last + x; //cout << "here " << last << endl; } } return x; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...