Submission #1288710

#TimeUsernameProblemLanguageResultExecution timeMemory
1288710minhnguyent546Gap (APIO16_gap)C++20
30 / 100
39 ms3236 KiB
#include "gap.h"
#include <vector>

long long findGap(int T, int N)
{
	if (T == 1) {
		std::vector<long long> arr(N);
		long long l = 0, r = (long long) 1e18;
		long long min_v, max_v;
		for (int i = 0; i < (N + 1) / 2; ++i) {
			MinMax(l, r, &min_v, &max_v);
			// assert(min_v != -1 && max_v != -1);
			arr[i] = min_v;
			arr[N - i - 1] = max_v;
			l = min_v + 1;
			r = max_v - 1;
		}
		long long ans = -1;
		for (int i = 0; i < N - 1; ++i) {
			ans = std::max(ans, arr[i + 1] - arr[i]);
		}
		return ans;

	} else {
		long long min_v, max_v;
		MinMax(0, (long long) 1e18, &min_v, &max_v);
		long long range = max_v - min_v;
		long long S = (range + N - 2) / (N - 1);
		long long ans = 0;
		long long prev = min_v;
		for (long long i = min_v; i < max_v; i += S + 1) {
			long long cur_min, cur_max;
			MinMax(i, i + S, &cur_min, &cur_max);
			if (cur_min != -1) {
				ans = std::max(ans, cur_min - prev);
				prev = cur_max;
			}
		}
		return ans;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...