This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
#include "gap.h"
using namespace std;
const int sz = 1e5 + 5;
long long a[sz];
long long findGap(int T, int N)
{
if (1 == T) {
long long mn, mx;
MinMax(0, 1e18, &mn, &mx);
a[1] = mn;
a[N] = mx;
for (int i = 1; i <= (N+1)/2-1; i ++) {
MinMax(mn+1, mx-1, &mn, &mx);
a[i+1] = mn;
a[N - i] = mx;
}
long long gp = 0;
for (int i = 1; i <= N-1; i ++)
gp = max(gp, a[i+1] - a[i]);
return gp;
} else {
long long mn, mx;
MinMax(0, 1e18, &mn, &mx);
vector<long long> b = {mn, mx};
long long k = (mx - mn + N-2) / (N-1);
while (N != (int) b.size()) {
long long d = mn + k;
// cout << mn+1 << ' ' << min(b[1]-1, mn + k+1) << '\n';
int s = mn+1;
int e = min(b[1]-1, mn + k+1);
if (s > e) break;
MinMax(s, e, &mn, &mx);
if (-1 == mn) {
mx = d;
continue;
} else if (mn == mx)
b.push_back(mn);
else {
b.push_back(mn);
b.push_back(mx);
while (true) {
if (mn+1>mx-1) break;
// cout << mn+1 << ' ' << mx-1 << '\n';
MinMax(mn+1, mx-1, &mn, &mx);
if (-1 == mn) break;
if (mn == mx) {
b.push_back(mn);
break;
} else {
b.push_back(mn);
b.push_back(mx);
}
}
mx = d;
}
mn = mx + 1;
}
//for (int x : b)
// cout << x << ' ';
// cout << '\n';
sort(begin(b), end(b));
long long gp = 0;
for (int i = 0; i < N-1; i ++)
gp = max(gp, b[i+1] - b[i]);
return gp;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |