Submission #106648

#TimeUsernameProblemLanguageResultExecution timeMemory
106648usernameGap (APIO16_gap)C++14
100 / 100
74 ms2296 KiB
#include<bits/stdc++.h>
#include "gap.h"
using namespace std;
#define VIS(it,con) for(auto it=con.begin();it!=con.end();++it)
#define MIN(x,y) (x=min(x,(y)))
#define MAX(x,y) (x=max(x,(y)))
#define REP(i,j,k) for(register int i=(j);i<(k);++i)
#define RREP(i,j,k) for(register int i=(j)-1;i>=(k);--i)
#define ALL(a) a.begin(),a.end()
#define MST(a,v) memset(a,(v),sizeof a)
#define pb push_back

typedef long long ll;
ll findGap(int t,int n){
	ll mn,mx,res=0;
	if(t==1){
		vector<ll>num;
		ll lb=0,rb=1e18;
		REP(i,0,(n+1)/2){
			MinMax(lb,rb,&mn,&mx);
			num.pb(mn);
			if(n%2==0||i+1<(n+1)/2)num.pb(mx);
			lb=mn+1,rb=mx-1;
		}
		sort(ALL(num));
		REP(i,1,n)MAX(res,num[i]-num[i-1]);
	}else{
		MinMax(0,1e18,&mn,&mx);
		ll d=(mx-mn+n-2)/(n-1);
		ll MX=mx,lb=mn,last=mn;
		REP(i,0,n-1){
			MinMax(lb,lb+d-1,&mn,&mx);
			if(mn>=0){
				MAX(res,mn-last);
				last=mx;
			}
			lb+=d;
		}
		MAX(res,MX-last);
	}
	return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...