제출 #1311541

#제출 시각아이디문제언어결과실행 시간메모리
1311541madamadam3Gap (APIO16_gap)C++20
100 / 100
47 ms3236 KiB
#include "gap.h"
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ll findGap(int T, int N) {
	if (T == 1) {
		vector<ll> a;
		ll s = 0, t = 1e18+1, mn = 0, mx = 0;
		for (int i = 0; i < (N+1)/2; i++) {
			MinMax(s, t, &mn, &mx);
			if (mn != -1) a.push_back(mn);
			if (mx != -1 && mx != mn) a.push_back(mx);
			s = mn+1, t = mx-1;
		}

		sort(a.begin(), a.end());

		ll ans = -1;
		for (int i = 0; i < N-1; i++) ans = max(ans, a[i+1] - a[i]);
		return ans;
	} else {
		ll s = 0, t = 1e18+1, mn = 0, mx = 0;
		MinMax(s, t, &mn, &mx);

		ll density = (mx - mn + N) / N;
		ll ans = density, curs = mn, tmx = mx;
		// cout << "density: " << density << "\n";

		while (curs < tmx) {
			s = curs+1, t = curs;
			mn = -1;

			while (mn == -1) {
				t += density;
				MinMax(s, t, &mn, &mx);
			}

			ans = max(ans, mn - curs);
			density = ans;
			curs = mx;
		}

		return ans;
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...