Submission #1352813

#TimeUsernameProblemLanguageResultExecution timeMemory
1352813KALARRYGap (APIO16_gap)C++20
100 / 100
29 ms2256 KiB
//chockolateman

#include<bits/stdc++.h>
#include "gap.h"

using namespace std;

const long long INF = 1000000000000000000ll;

long long findGap(int T, int N)
{
	if(T==1)
	{
		vector<long long> nums;
		long long l = 0;
		long long r = INF;
		long long reta;
		long long retb;
		while(nums.size() < N && l <= r)
		{
			MinMax(l,r,&reta,&retb);
			if(reta != -1)
			{
				nums.push_back(reta);
				if(retb != reta)
					nums.push_back(retb);
				l = reta + 1;
				r = retb - 1;
			}
			else
				l = INF + 1;
		}
		sort(nums.begin(),nums.end());
		long long ans = 0;
		for(int i = 1 ; i < N ; i++)
			ans = max(ans,nums[i] - nums[i-1]);
		return ans;
	}
	else
	{
		long long reta;
		long long retb;
		MinMax(0,INF,&reta,&retb);
		long long mn = reta;	
		long long mx = retb;
		long long K = ceil(((long double)mx - mn)/(N-1));
		long long start = mn;
		long long pos = start + 1;
		while(start < mx)
		{
			MinMax(pos,min(pos+K,INF),&reta,&retb);
			pos = min(INF,pos + K + 1);
			if(reta != -1)
			{
				K = max(K,reta - start);
				start = retb;
				pos = start + 1;
			}
		}
		return K;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...