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 "gap.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = 1e18;
pair<ll, ll> get(ll l, ll r) {
ll mn, mx;
MinMax(l, r, &mn, &mx);
return {mn, mx};
}
ll findGap(int t, int n) {
if (t == 2) {
auto [l, r] = get(0, INF);
ll d = (r - l + n - 2) / (n - 1);
ll res = d;
vector<pair<ll, ll>> segs;
ll cur = l;
while (cur <= r) {
segs.push_back({cur, min(r, cur + d)});
cur = cur + d + 1;
}
vector<ll> mx(segs.size()), mn(segs.size());
for (int i = 0; i < (int)segs.size(); ++i) {
auto [L, R] = get(segs[i].first, segs[i].second);
mx[i] = R;
mn[i] = L == -1 ? INF + 1 : L;
}
for (int i = 1; i < (int)segs.size(); ++i) {
mx[i] = max(mx[i], mx[i - 1]);
}
for (int i = (int)segs.size() - 2; i >= 0; --i) {
mn[i] = min(mn[i], mn[i + 1]);
}
for (int i = 1; i < (int)segs.size(); ++i) {
if (mx[i - 1] != -1 && mn[i] != INF + 1) {
res = max(res, mn[i] - mx[i - 1]);
}
}
return res;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |