Programa 4: Seudomediana.
Escribe un programa en C, C++ o Java que lea un entero n y un arreglo
de n enteros a1, a2, ..., an y que
lleve a cabo el siguiente proceso recursivo: si el arreglo tiene
sólo un elemento regresa ese valor, si el arreglo tiene dos
elementos regresa el más grande de esos dos, si el arreglo tiene
tres elementos regresa el de enmedio de esos tres, si el arreglo tiene
más de tres elementos entonces forma los n/3 grupos (a1,
a2, a3), (a4, a5, a6),
etc., aplica las reglas anteriores a cada uno de los n/3 grupos para
obtener un nuevo arreglo b1, b2, ..., bn/3
y luego aplícale recursivamente el algoritmo completo a este
nuevo arreglo. Por ejemplo, si n = 11 y el arreglo es a = (4, 7, 2, 4,
9, 2, 0, 1, 3, 7, 3) entonces en un primer paso se forman los grupos
(4, 7, 2), (4, 9, 2), (0, 1, 3) y (7, 3) de donde se obtiene el nuevo
vector b = (4, 4, 1, 7), en un segundo paso se forman los grupos (4, 4,
1) y (7) de donde se obtiene el nuevo vector (4, 7), y de aquí
en el último paso se regresa el valor 7. Puedes suponer que 0
< n <=
106 y que cada uno de los enteros ai
también está en ese intervalo. Tu programa debe llamarse
med.c, med.cpp o med.java, debe compilar con gcc, g++ o gcj, ejecutarse
en menos de 1 segundo, y no debe leer ni escribir ningún dato
adicional.
Ejemplo de entrada
|
Ejemplo de salida
|
11
4 7 2 4 9 2 0 1 3 7 3
|
7
|