Submission #261464

#TimeUsernameProblemLanguageResultExecution timeMemory
261464srvltGap (APIO16_gap)C++14
100 / 100
72 ms1272 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define all(x) begin(x), end(x)
#define SZ(x) (int)(x).size()
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#include "gap.h"

ll findGap(int T, int N) {
	if (T == 1) {
		ll l = -1, r = 2e18, mn, mx;
		ll ans = 0;
		int cnt = 0;
		while (cnt < N) {
			if (l + 1 > r - 1) break;
			MinMax(l + 1, r - 1, & mn, & mx);
			if (mn == -1) break;
			if (l >= 0) {
				ans = max(ans, mn - l);
				ans = max(ans, r - mx);
			}
			l = mn, r = mx;
			cnt += 2;
		}
		ans = max(ans, r - l);
		return ans;
	}
	ll mn = 0, mx = 0;
	MinMax(0ll, 1e18, & mn, & mx);
	ll step = (mx - mn) / (N - 1);
	ll ans = step, L = 0, R = mn - 1, last = -1;
	
	ll l, r;
	for (int i = 1; i < N; i++) {
		L = R + 1;
		R = L + step;
		MinMax(L, R, & l, & r);
		if (i > 1 && l != -1 && last != -1)
			ans = max(ans, l - last);
		if (l != -1)
			last = r;
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...