제출 #160839

#제출 시각아이디문제언어결과실행 시간메모리
160839nafis_shifatGap (APIO16_gap)C++14
100 / 100
115 ms1912 KiB
#include "gap.h"
#include<bits/stdc++.h>
#define pii pair<int,int>
#define ll long long
using namespace std;

const ll inf=1e18;
ll solve1(int N)
{
	int n=N;
	ll a[n];
	int id=0;

	ll l1=0;
	ll l2=inf;
	ll mn,mx;
	while(n>0)
	{
	    
		MinMax(l1,l2,&mn,&mx);
		if(mx!=mn)n-=2;
		else n--;
		a[id]=mn;
		a[N-id-1]=mx;
		id++;
		l1=mn+1;
		l2=mx-1;
	
	}
	ll c=0;

	for(int i=1;i<N;i++)c=max(c,a[i]-a[i-1]);
	return c;
}
ll solve2(int N)
{
	ll mx,mn;
	mx=mn=-1;

	MinMax(0,inf,&mn,&mx);


	ll sm=mn;
	ll up=mx;
	ll off=(mx-mn-1)/N;

	ll lst=sm;
	ll cur=0;

	ll pnt=sm+1;
	
	for(int i=1;i<N;i++)
	{

		MinMax(pnt,pnt+off-1,&mn,&mx);
		if(mn!=-1)
		{
			cur=max(cur,mn-lst);
			lst=mx;
		}
		pnt+=off;
	}

	MinMax(pnt,up-1,&mn,&mx);

	if(mn!=-1)
	{
		cur=max(cur,mn-lst);
		cur=max(cur,up-mx);
	}
	else
	{
		cur=max(cur,up-lst);
	}


	return cur;





}
long long findGap(int T, int N)
{
	if(T==1)return solve1(N);
	return solve2(N);

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