feat: new greedy problem formated

This commit is contained in:
2026-02-05 23:10:20 -03:00
parent 0f4e453c07
commit a3f93d2e59
143 changed files with 859320 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
Um novo reality show de competição foi lançado na cidade. De acordo com as regras do programa, os participantes devem ser organizados de uma forma específica: dado um número par de pessoas, todos os participantes devem obrigatoriamente ser agrupados em duplas.
Você recebeu um array de \( n \) inteiros \( a_1, a_2, \ldots, a_n \). Sabe-se que \( n \) é um número par. O objetivo é dividir os participantes em exatamente \( n/2 \) pares \( (a_{p_1}, a_{q_1}), (a_{p_2}, a_{q_2}), \ldots, (a_{p_{n/2}}, a_{q_{n/2}}) \). Cada índice do array original pode pertencer a apenas um único par.
Para qualquer par \( (x, y) \), a \textbf{diferença} é definida pelo valor absoluto \( |x - y| \). A tarefa é formar as duplas de modo que a \textbf{maior diferença} encontrada entre todos os pares seja a \textbf{mínima possível}.
Determine o menor valor possível para essa diferença máxima.

View File

@@ -0,0 +1,9 @@
A entrada consiste em vários casos de teste. A primeira linha contém um único inteiro \( t \) (\( 1 \le t \le 10^4 \)), indicando o número de casos de teste.
Para cada caso de teste:
\begin{itemize}
\item A primeira linha contém um número par \( n \) (\( 2 \le n \le 2 \cdot 10^5 \)), representando o comprimento do array \( a \).
\item A segunda linha contém \( n \) inteiros \( a_i \) (\( -10^9 \le a_i \le 10^9 \)), representando os valores atribuídos a cada participante.
\end{itemize}
É garantido que a soma de \( n \) em todos os casos de teste não excede \( 2 \cdot 10^5 \).

View File

@@ -0,0 +1,3 @@
No primeiro caso de teste, temos \( n=2 \) e os participantes possuem valores \(\{1, 2\}\). Como só existe uma forma de formar um par, a única diferença possível é \( |1 - 2| = 1 \). Portanto, a maior diferença mínima possível é 1.
No segundo caso de teste, temos \( n=4 \) com os valores \(\{5, 5, 5, 5\}\). Como todos os participantes possuem o mesmo valor, qualquer par formado terá uma diferença de \( |5 - 5| = 0 \). Assim, a diferença máxima entre todos os pares é 0, que é o valor ótimo.

View File

@@ -0,0 +1 @@
Para cada caso de teste, imprima um único número inteiro representando o \textbf{valor mínimo possível da diferença máxima} entre os elementos de todos os pares formados.

View File

@@ -0,0 +1,15 @@
\subsection*{Resumo da Estratégia}
O problema pede para agrupar $n$ elementos em duplas de modo que a maior diferença absoluta entre os membros de qualquer par seja a menor possível. A solução utiliza uma abordagem \textbf{gulosa (greedy)} baseada em ordenação.
\subsection*{Passos para a Solução}
\begin{enumerate}
\item \textbf{Ordenação:} Ordene o array $a$ em ordem crescente: $a_1 \le a_2 \le \dots \le a_n$.
\item \textbf{Emparelhamento Adjacente:} Para minimizar a diferença entre dois números, eles devem estar o mais próximos possível na reta numérica. Portanto, a melhor estratégia é sempre emparelhar elementos vizinhos na sequência ordenada: $(a_1, a_2), (a_3, a_4), \dots, (a_{n-1}, a_n)$.
\item \textbf{Cálculo do Máximo:} Calcule a diferença $d_i = a_{2i} - a_{2i-1}$ para cada par $i$. A resposta final é o valor máximo entre todas essas diferenças.
\end{enumerate}
\subsection*{Complexidade}
\begin{itemize}
\item \textbf{Tempo:} $O(N \log N)$ devido à ordenação. O cálculo das diferenças é $O(N)$.
\item \textbf{Espaço:} $O(N)$ para armazenar os elementos do array.
\end{itemize}