Submission #497227

#TimeUsernameProblemLanguageResultExecution timeMemory
497227ignaciocantaGap (APIO16_gap)C++14
100 / 100
58 ms1864 KiB
#include "gap.h"

#include <bits/stdc++.h>
using namespace std;

#define FOR(i, a, b) for(int i = (a); i < (b); ++i)
#define F0R(i, a) FOR(i, 0, a)
using vi = vector<int>;
using tint = long long;
using vl = vector<tint>;

long long findGap(int T, int n)
{
	if(T == 1){
		vl a(n);
		int l = 0, r = n-1;
		tint L = 0, R = 1e18;
		while(l <= r){
			MinMax(L, R, &L, &R);
			a[l] = L; a[r] = R;
			++L; --R;
			++l; --r;
		}
		tint maxi = 0;
		F0R(i, n-1) maxi = max(maxi, a[i+1] - a[i]);
		return maxi;
	}else{
		tint L = 0, R = 1e18;
		MinMax(L, R, &L, &R);
		tint RR = R;
		tint lowerBound = (R - L) / (n - 1);
		tint ret = lowerBound;
		tint last = L;
		for(tint i = L; i <= RR; i += lowerBound+1){
			MinMax(i, i+lowerBound, &L, &R);
			//cout << i << " " << i+lowerBound << " " << L << " " << R << "\n";
			if(L != -1){
				ret = max(ret, L - last);
				last = R;
			}
		}
		return ret;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...