제출 #1348220

#제출 시각아이디문제언어결과실행 시간메모리
1348220jumpGap (APIO16_gap)C++20
78.54 / 100
32 ms3368 KiB
#include "gap.h"
#include <bits/stdc++.h>
#define ll long long

std::vector<ll> a;
long long findGap(int T, int N)
{
	ll mn,mx,ans = 0;
    MinMax(0,1e18,&mn,&mx);
	if(T==1){
		std::vector<ll> left={mn};
		std::vector<ll> right={mx};
		ll l=1,r=N-2;
		while(l<=r){
			MinMax(mn+1,mx-1,&mn,&mx);
			// std::cout << v1+1 << ' ' << v2-1 << '\n';
			left.push_back(mn);
			right.push_back(mx);
			l+=1;r-=1;
		}
		ll best=0;
		for(int i=0;i<left.size()-1;i++){
			ll diff = left[i+1]-left[i];
			best=std::max(diff,best);
		}
		for(int i=0;i<right.size()-1;i++){
			ll diff = right[i]-right[i+1];
			best=std::max(diff,best);
		}
		best=std::max(best,right.back()-left.back());
		return best;
	}
	else{
		ll meandis = ((mx-mn+N-2)/N-1);
		ans=meandis;
		for(ll x=mn;x<=mx;x+=meandis+1){
			ll a1,a2;
			MinMax(x,x+meandis,&a1,&a2);
			a.push_back(a1);a.push_back(a2);
		}
		std::sort(a.begin(),a.end());
		for(ll i=0;i<a.size()-1;i++)ans=std::max(ans,a[i+1]-a[i]);
		return ans;
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...