Submission #42631

#TimeUsernameProblemLanguageResultExecution timeMemory
42631MatheusLealVGap (APIO16_gap)C++14
34.83 / 100
1888 ms2884 KiB

#include <bits/stdc++.h>
#include "gap.h"
#define N 100005
#define inf 1000000000000000000LL
using namespace std;
typedef long long ll;
 
ll n, v[N], ans[N];
 
vector<ll> val;
 
void solve(ll ini, ll fim)
{
	if(ini == fim)
	{
		val.push_back(ini);
 
		return;
	}
 
	ll mid = (ini + fim)/2;
 
	ll a, b;
 
	MinMax(mid + 1, fim, &a, &b);
 
	//cout<<mid + 1<<" "<<fim<<" "<<a<<" "<<b<<"\n";
 
	if(a != -1 && b != -1) solve(mid + 1, fim);
 
	MinMax(ini, mid, &a, &b);
 
	//cout<<ini<<" "<<mid<<" "<<a<<" "<<b<<"\n";
 
	if(a != -1 && b != -1) solve(ini, mid);
}
 
ll findGap(int T, int N_)
{
	ll best = 0;
 
	if(T == 1)
	{
		n = N_;
 
		ll esq = 0, dir = inf;
 
		for(int i = 1, st = 1, en = n; i <= (n + 1)/2; i++, st ++, en --)
		{
			ll a, b;
 
			MinMax(esq, dir, &a, &b);
 
			esq = a + 1, dir = b - 1;
 
			if(a != -1 && b != -1) ans[st] = a, ans[en] = b;
		}
 
		for(int i = 2; i <= n; i++) best = max(best, ans[i] - ans[i - 1]);
 
		return best;
	}
 
	else
	{
		solve(0, inf);
 
		sort(val.begin(), val.end());
 
		for(int i = 1; i < val.size(); i++) best = max(best, val[i] - val[i - 1]);
 
		return best;
	}
 
}

Compilation message (stderr)

gap.cpp: In function 'll findGap(int, int)':
gap.cpp:71:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 1; i < val.size(); i++) best = max(best, val[i] - val[i - 1]);
                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...