Submission #1308644

#TimeUsernameProblemLanguageResultExecution timeMemory
1308644HasanV11010238Gap (APIO16_gap)C++20
70 / 100
47 ms3232 KiB
#include "gap.h"
#include <bits/stdc++.h>
#define ll long long
#define MAX 1000000000000000000
using namespace std;
long long findGap(int T, int N)
{
	ll mi = 0, ma = 0, ans = 0, cur = 0, mx, sz;
	MinMax(0, MAX, &mi, &ma);
	if (T == 1){
		vector<ll> v;
		while (mi <= ma && mi != -1){
			v.push_back(mi);
			v.push_back(ma);
			if (mi + 1 > ma - 1) break;
			ll cl = mi + 1, cr = ma - 1;
			MinMax(cl, cr, &mi, &ma);
		}
		sort(v.begin(), v.end());
		for (int i = 1; i < v.size(); i++){
			ans = max(ans, v[i] - v[i - 1]);
		}
	}
	else{
		ans = (ma - mi) / (ll)(N - 1), cur = mi;
		mx = ma, sz = ans;
		while (cur < mx){
			MinMax(cur + 1, cur + sz, &mi, &ma);
			if (mi == -1){
				sz *= 2;
			}
			else{
				ans = max(ans, mi - cur);
				cur = ma, sz = ans;
			}
		}
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...