Submission #42629

#TimeUsernameProblemLanguageResultExecution timeMemory
42629MatheusLealVGap (APIO16_gap)C++14
4.83 / 100
1840 ms2924 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 = 1; 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:70: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...