Submission #720039

#TimeUsernameProblemLanguageResultExecution timeMemory
720039ForestedGap (APIO16_gap)C++17
100 / 100
63 ms1076 KiB
#include "gap.h"
#include <algorithm>

long long findGap(int t, int n) {
	if (t == 1) {
		long long ans = 0;
		long long pmn = -1, pmx = 1000000000000000001, mn = -1, mx = -1;
		for (int i = 0; i < (n + 1) / 2; ++i) {
			MinMax(pmn + 1, pmx - 1, &mn, &mx);
			if (i != 0) {
				ans = std::max({ans, mn - pmn, pmx - mx});
			}
			pmn = mn;
			pmx = mx;
		}
		ans = std::max(ans, pmx - pmn);
		return ans;
	}
	long long mn = -1, mx = -1;
	MinMax(0, 1000000000000000000, &mn, &mx);
	long long l = mn, h = mx;
	long long w = (h - l + n - 1) / n;
	long long cur = l + 1, pmx = l, ans = 0;
	while (cur <= h) {
		MinMax(cur, cur + w - 1, &mn, &mx);
		if (mn != -1) {
			if (pmx != -1) {
				ans = std::max(ans, mn - pmx);
			}
			pmx = mx;
		}
		cur += w;
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...