Descripción
La lógica de este problema es obtener la mediana de una lista de números dados, inicialmente las condiciones que se toman en cuenta son:
- La lista de números es de tamaño impar.
- La lista de números está ordenada.
Si se cumple con esto, entonces pasamos a obtener la mediana de la lista con la siguiente fórmula:
Donde M
es median_index
(la posición de la mediana en la lista). Por otro lado, la otra condición es que tanto a la izquierda como a la derecha de la mediana no existan números iguales a la mediana, si se cumple esta condición, entonces la mediana es correcta, de lo contrario, la mediana no es correcta.
Pasos
- Recibir casos de prueba hasta que se reciba una línea en blanco
\n
. - Por cada caso, recibir la cantidad de números
n
, seguido de la lista de números. - Ordenar la lista de números.
- Si
n
es par, imprimir-1
y continuar con el siguiente caso. - Calcular la posición de la mediana
median_index = (n) // 2
. - Inicializar dos variables
i
yj
con los valoresmedian_index - 1
ymedian_index + 1
respectivamente. - Inicializar una variable
is_median
enTrue
para saber si la mediana es correcta. - Recorrer la lista de números hacia la izquierda y derecha desde la posición de la mediana para verificar si la mediana es correcta.
- Si la mediana es correcta, imprimir el valor de la mediana, de lo contrario imprimir
-1
.
Código
python
from sys import stdin
for line in stdin:
if line == "\n":
break
n = int(line)
numbers = list(map(int, input().split()))
numbers.sort()
if n % 2 == 0:
print(-1)
continue
median_index = (n) // 2
i, j = median_index - 1, median_index + 1
is_median = True
while i >= 0 and j < n:
if numbers[i] == numbers[median_index]:
is_median = False
break
if numbers[j] == numbers[median_index]:
is_median = False
break
i -= 1
j += 1
if is_median:
print(numbers[median_index])
else:
print(-1)