제출 #1301749

#제출 시각아이디문제언어결과실행 시간메모리
1301749islam_2010Gap (APIO16_gap)C++20
30.55 / 100
45 ms3236 KiB
#include "gap.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long

long long findGap(int T, int N)
{
	if(T == 1){
		vector<ll> v;
		ll mn = 0, mx = 0;
		MinMax(0, 1e18, &mn, &mx);
		v.push_back(mn);
		if(mn != mx){
			v.push_back(mx);
		}
		ll l = mn, r = mx;
		while (l <= r){
			if(v.size() >= N) break;
			MinMax(l+1, r-1, &mn, &mx);
			if(mn == -1) break;
			v.push_back(mn);
			if(mn != mx){
				v.push_back(mx);
			}
			l = mn;
			r = mx;

		}sort(v.begin(), v.end());
		ll ans = 0;
		for(ll i = 0; i < v.size()-1; i++){
			ans = max(ans, v[i+1] - v[i]);
		}return ans;
	}else {
		ll mn, mx;
		MinMax(0, 1e18, &mn, &mx);
		ll p = (mx-mn)/(N-1);
		ll ans = 0;
		while(mn < mx){
			ll l = 0, r = 0;
			MinMax(mn+1, mn+p, &l, &r);
			if(l == -1){
				p *=2;
			}else {
				ans = max(ans, l - mn);
				p = ans;
				mn = l;
			}
		}return ans;

	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...