Los retrasos del ferrocarril
Una empresa ferroviaria publica cada noche cuánto se retrasó cada tren del día, en minutos enteros, y un tren que llegó antes de la hora aparece con retraso negativo. El promedio no sirve de nada porque un solo tren detenido cuatro horas lo arruina, así que la autoridad exige la mediana. Y para el informe pregunta además qué retraso tuvieron los trenes que ocupan ciertos lugares de la tabla.
Qué hay que hacer
Ordena los retrasos de menor a mayor y escribe primero la mediana y después la respuesta a cada consulta. La mediana es el valor del medio cuando hay una cantidad impar de trenes, y el promedio de los dos del medio cuando la cantidad es par. Cada consulta trae un lugar p y se responde con el retraso que ocupa ese lugar. El lugar 1 es el retraso menor, no el mayor, y no existe el lugar 0.
El archivo que te dan
La primera línea trae n, cuántos trenes hay, con 1 <= n <= 5000. Después vienen los n retrasos, enteros entre -30 y 600. Después un número q, cuántas consultas hay, con 1 <= q <= 100. Y después los q lugares consultados, cada uno entre 1 y n. Un mismo lugar puede consultarse varias veces y las consultas no vienen en ningún orden.
El que tienes que escribir
La primera línea trae la mediana con exactamente dos decimales, aunque el número sea redondo: siete se escribe 7.00 y menos tres y medio se escribe -3.50. Después, una línea por consulta y en el mismo orden en que llegaron, con el retraso entero que ocupa ese lugar.
Los casos que puedes ver
Hay 6 en total. Los demás se descubren fallando, como en el ramo.
el ejemplo del enunciado: cinco trenes, mediana impar
entrada
5 7 -3 12 0 7 3 1 3 5
salida
7.00 -3 7 12
cuatro trenes: la mediana cae entre dos y lleva medio minuto
entrada
4 10 3 8 1 2 2 4
salida
5.50 3 10
Tu programa
Recibe las dos rutas por argv, igual que en el ramo. Lo que escribas con fprintf es lo que se compara.
#include <stdio.h>#include <stdlib.h>int main(int argc, char **argv) {if (argc < 3) {fprintf(stderr, "uso: %s entrada salida\n", argv[0]);return 1;}/* Falta: abrir argv[1] con "r" y argv[2] con "w". *//* Falta: leer cuántos trenes hay y sus retrasos. *//* Falta: dejar los retrasos de menor a mayor. *//* Falta: calcular la mediana y escribirla con dos decimales. *//* Falta: leer cuántas consultas hay y responder cada una en su orden. *//* Falta: cerrar los dos archivos antes de terminar. */return 0;}