제출 #1343811

#제출 시각아이디문제언어결과실행 시간메모리
1343811NewtonabcGap (APIO16_gap)C++20
100 / 100
47 ms3236 KiB
#include "gap.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+10;
ll arr[N];
long long findGap(int T, int N)
{	
	if(T==2){
		vector<pair<ll,ll>> v;
		long long n=N;
		ll mn,mx;
		ll tmp=1e18;
		MinMax(1LL,tmp,&mn,&mx);
		ll l=mn,r=mx;
		long long rng=r-l;
		long long sz=(rng+n-2LL)/(n-1LL);
		for(ll i=l+sz;i<=r+sz-1;i+=sz+1LL){
			ll lb=i-sz;
			ll sec=i/sz;
			//cout<<lb <<" " <<i <<"\n";
			MinMax(lb,i,&mn,&mx);
			if(mn!=-1) v.push_back({mn,mx});
		}
		ll ans=sz;
		for(int i=0;i<(int)(v.size())-1;i++){
			ans=max(ans,v[i+1].first-v[i].second);
		}
		return ans;
	}
	else{
		long long ans=LLONG_MIN;
		int lind=1,rind=N;
		long long l=0,r=1e18,mn,mx;
		while(lind<=rind){
			MinMax(l,r,&mn,&mx);
			if(mn==-1) break;
			arr[lind]=mn,arr[rind]=mx;
			lind++,rind--;
			l=mn+1,r=mx-1;
		}
		for(int i=1;i<N;i++){
			ans=max(ans,arr[i+1]-arr[i]);
		}
		/*for(int i=0;i<N;i++) cout<<arr[i] <<" ";
		cout<<"\n\n";*/
		return ans;
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...