Submission #516864

#TimeUsernameProblemLanguageResultExecution timeMemory
516864CSQ31Gap (APIO16_gap)C++17
100 / 100
61 ms3212 KiB
#include "gap.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
long long findGap(int T, int N)
{
	if(T==1){
		ll l = 0,r = 1e18;
		vector<ll>a,b;
		while(r>=l && a.size() + b.size() < N){
			ll mn,mx;
			MinMax(l,r,&mn,&mx);
			if(mn==-1)break;
			if(mn==mx){
				a.push_back(mn);
				break;
			}else{
				a.push_back(mn);
				b.push_back(mx);	
			}
			l = mn+1;
			r = mx-1;
		}
		reverse(b.begin(),b.end());
		for(auto x:b)a.push_back(x);
		ll ans = 0;
		for(int i=0;i+1<N;i++)ans = max(ans,a[i+1]-a[i]);
		return ans;
	}
	else{
		ll mn,mx;
		MinMax(0,1e18,&mn,&mx);
		ll x = (mx-mn+N-1) /(N-1);
		vector<ll>a;
		for(ll l=mn;l<=mx;){
			ll c,d;
			MinMax(l,min(l+x-1,mx),&c,&d);
			l = max(d+1,l+x);
			if(c == -1)continue;
			a.push_back(c);
			a.push_back(d);
		}		
		ll ans = 0;
		for(int i=0;i+1<(int)(a.size());i++)ans = max(ans,a[i+1]-a[i]);
		return ans;
	}
}

Compilation message (stderr)

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:10:37: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   10 |   while(r>=l && a.size() + b.size() < N){
      |                 ~~~~~~~~~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...