제출 #1341287

#제출 시각아이디문제언어결과실행 시간메모리
1341287kawhietGap (APIO16_gap)C++20
100 / 100
47 ms2328 KiB
#include <bits/stdc++.h>
#include "gap.h"
using namespace std;

long long findGap(int _, int n) {
	if (_ == 1) {
		long long mn = 0, mx = 1e18;
		vector<long long> a(n);
		for (int l = 0, r = n - 1; l <= r; l++, r--) {
			MinMax(mn, mx, &mn, &mx);
			a[l] = mn;
			a[r] = mx;
			mn++;
			mx--;
		}
		long long ans = 0;
		for (int i = 1; i < n; i++) {
			ans = max(ans, a[i] - a[i - 1]);
		}
		return ans;
	}
	long long mn = 0, mx = 1e18;
	MinMax(mn, mx, &mn, &mx);
	long long gap = (mx - mn + n - 2) / (n - 1);
	long long l = mn, r = mx;
	vector<long long> a;
	while (l <= r) {
		long long x = 0, y = 0;
		MinMax(l, l + gap, &x, &y);
		if (x != -1) {
			a.push_back(x);
		}
		if (x != y) {
			a.push_back(y);
		}
		l += gap + 1;
	}
	ranges::sort(a);
	long long ans = gap;
	for (int i = 1; i < a.size(); i++) {
		ans = max(ans, a[i] - a[i - 1]);
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...