제출 #42645

#제출 시각아이디문제언어결과실행 시간메모리
42645MatheusLealVGap (APIO16_gap)C++14
46.81 / 100
82 ms2660 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(fim < ini) return;
  
	if(ini == fim)
	{
		val.push_back(ini);
 
		return;
	}
 
	ll mid = (ini + fim)/2;
 
	ll a, b;
 
	MinMax(mid + 1, fim, &a, &b);
 
	if(a != -1 && b != -1)
	{
		val.push_back(a);

		if(a != b) val.push_back(b);

		solve(a + 1, b - 1);
	}
 
	MinMax(ini, mid, &a, &b);
  
	if(a != -1 && b != -1)
	{
		val.push_back(a);

		if(a != b) val.push_back(b);
		
		solve(a + 1, b - 1);
	}
}
 
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;
	}
 
}

컴파일 시 표준 에러 (stderr) 메시지

gap.cpp: In function 'll findGap(int, int)':
gap.cpp:82: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...