Submission #45834

#TimeUsernameProblemLanguageResultExecution timeMemory
45834gnoorGap (APIO16_gap)C++17
30 / 100
85 ms2552 KiB
#include "gap.h"
#include <cstdio>
#ifdef debug
#include "grader.cpp"
#endif

#include <vector>
#include <algorithm>

using namespace std;


long long findGap(int T, int N)
{
	if (T==1) {
		vector<long long> tbl;	
		long long mn,mx;
		long long left=0;
		long long rgt=1e18;
		int x=(N+1)/2;
		for (int i=0;i<x;i++) {
			MinMax(left,rgt,&mn,&mx);
			tbl.push_back(mn);
			if (mx!=mn) tbl.push_back(mx);
			left=mn+1;
			rgt=mx-1;	
		}		
		sort(tbl.begin(),tbl.end());
		long long ans=0;
		for (int i=1;i<N;i++) {
			//printf("%lld ",tbl[i]);
			ans=max(ans,tbl[i]-tbl[i-1]);
		}
		//printf("\n");
		return ans;
	} else {
		long long mn,mx;
		MinMax(0,1e18,&mn,&mx);
		if (N==2) return mx-mn;
		long long blkSz=(mn-mn-1)/(N-2);
		long long ans=0;
		long long left=mn;
		long long a,b;
		for (long long i=mn+1;i<mx;i+=blkSz) {
			MinMax(i,min(i+blkSz-1,mx-1),&a,&b);
			if (a==-1) continue;
			ans=max(ans,a-left);
			left=b;
		}
		ans=max(ans,mx-left);
		return ans;
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...