제출 #1326476

#제출 시각아이디문제언어결과실행 시간메모리
1326476SSKMFGap (APIO16_gap)C++20
100 / 100
41 ms1204 KiB
#include "gap.h"
#include <bits/stdc++.h>
using namespace std;

long long findGap (int tip , int cantitate)
{
	if (tip == 1)
	{
		long long *inceput = new long long , *sfarsit = new long long;
		MinMax(0 , 1e18 , inceput , sfarsit);

		long long maxim = 0;
		for (int stanga = 2 , dreapta = cantitate - 1 ; stanga <= dreapta ; stanga++ , dreapta--)
		{
			long long *__inceput = new long long , *__sfarsit = new long long;
			MinMax(*inceput + 1 , *sfarsit - 1 , __inceput , __sfarsit);

			maxim = max({maxim , *__inceput - *inceput , *sfarsit - *__sfarsit});

			*inceput = *__inceput;
			*sfarsit = *__sfarsit;
			delete __inceput;
			delete __sfarsit;
		}

		if (cantitate % 2 == 0)
			{ maxim = max(maxim , *sfarsit - *inceput); }

		return maxim;
	}

	long long *inceput = new long long , *sfarsit = new long long;
	MinMax(0 , 1e18 , inceput , sfarsit);

	const long long lungime_bloc = (*sfarsit - *inceput - 1) / (cantitate - 1) + 1;
	long long maxim = lungime_bloc;
	
	for (long long capat = *inceput , anterior = -1 ; capat <= *sfarsit ; capat += lungime_bloc + 1)
	{
		long long *__inceput = new long long , *__sfarsit = new long long;
		MinMax(capat , min(*sfarsit , capat + lungime_bloc) , __inceput , __sfarsit);
		if (anterior != -1 && *__inceput != -1) { maxim = max(maxim , *__inceput - anterior); }
		if (*__sfarsit != -1) { anterior = *__sfarsit; }
		delete __inceput;
		delete __sfarsit;
	}

	return maxim;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...