제출 #564878

#제출 시각아이디문제언어결과실행 시간메모리
564878ljubaGap (APIO16_gap)C++17
30 / 100
65 ms1872 KiB
#include "gap.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

long long findGap(int T, int N) //probably again different solution for different test cases :(
{
	if(T == 1) {
		// cerr << "entered?" << endl;
		vector<ll> v(N);
		ll mini = -1, maksi = ll(1e18) + 1;

		for(int i = 0; i < N; ++i) {
			if(i > N - i - 1) break;
			++mini, --maksi;
			MinMax(mini, maksi, &mini, &maksi);
			// cerr << mini << " " << maksi << '\n';
			v[i] = mini;
			v[N - i - 1] = maksi;
		}

		ll ans = 0;

		for(int i = 1; i < N; ++i) {
			ans = max(ans, v[i] - v[i - 1]);
		}

		return ans;
	} else {
		ll mini = 0, maksi = ll(1e18);
		MinMax(mini, maksi, &mini, &maksi);

		ll korak = (maksi - mini + N - 2) / (N - 1);

		ll prosli = mini;
		ll ans = 0;

		ll naj = maksi;

		for(ll i = mini + 1; i < naj; i += korak + 1) {
			MinMax(i, min(i + korak, naj), &mini, &maksi);
			// cerr << "----------" << endl;
			// cerr << i << " " << i + korak << endl;
			// cerr << mini << " " << maksi << endl;
			// cerr << "----------" << endl;
			if(mini != -1) {
				ans = max(ans, mini - prosli);
				prosli = mini;
			}
		}

		return ans;
	}

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