제출 #117933

#제출 시각아이디문제언어결과실행 시간메모리
117933win11905Gap (APIO16_gap)C++11
70 / 100
126 ms2420 KiB
#include <bits/stdc++.h>
#include "gap.h"
#define long long long
using namespace std;

long MX = 1e18;

long findGap(int T, int N) {
	long mn, mx;
	if(T == 2) {
		MinMax(0, MX, &mn, &mx);
		long sz = (mx-mn+N-2) / (N-1);		
		long ans = sz;
		long pv = mn;
		long z = mx;
		long p = mn;
		while(p <= z) {
			MinMax(p, p+sz, &mn, &mx);
			if(mn != -1) {
				ans = max(ans, mn - pv);
				pv = mx;
			}
			p += sz+1;
		}
		return ans;
	} else {
		vector<long> vec;
		long l = 0, r = MX;
		while(true) {
			MinMax(l, r, &mn, &mx);
			if(mn != -1) vec.emplace_back(mn);
			if(mn != mx) vec.emplace_back(mx);
			l = mn+1, r = mx-1;
			if(mn == mx || mn == -1 || mn > mx) break;
		}
		sort(vec.begin(), vec.end());
		long ans = 0;
		for(int i = 1; i < N; ++i) ans = max(ans, vec[i] - vec[i-1]);
		return ans;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...