La tabla de la olimpiada
En una olimpiada escolar de matemáticas cada equipo recibe al inscribirse un número correlativo: el uno es el que llegó primero. Al terminar la prueba hay que publicar la tabla, y las bases resuelven los empates de una forma que no se discute: a igual puntaje va antes el que se inscribió antes. Los puntajes bajan de cero cuando un equipo responde mal y la respuesta mala descuenta.
Qué hay que hacer
Lee los equipos con su número de inscripción y su puntaje, y escribe la tabla de mayor a menor puntaje. Cuando dos equipos empatan en puntaje, va antes el del número de inscripción más bajo. Cada equipo recibe un lugar propio: dos equipos empatados ocupan lugares distintos y consecutivos, nunca el mismo.
El archivo que te dan
La primera línea trae n, cuántos equipos hay, con 1 <= n <= 2000. Después vienen n líneas con dos enteros separados por un espacio: el número de inscripción —distinto para cada equipo, entre 1 y 100000— y el puntaje, entre -500 y 1000.
El que tienes que escribir
n líneas, una por equipo y en el orden de la tabla. Cada línea trae tres números separados por un espacio: el lugar, el número de inscripción y el puntaje. El primer lugar es el 1, no el 0, y los lugares llegan hasta n sin saltarse ninguno ni repetir.
Los casos que puedes ver
Hay 6 en total. Los demás se descubren fallando, como en el ramo.
el ejemplo del enunciado: dos equipos empatados en 50
entrada
4 17 50 8 70 23 50 41 12
salida
1 8 70 2 17 50 3 23 50 4 41 12
sin empates, y con un equipo penalizado
entrada
3 5 -10 9 33 2 0
salida
1 9 33 2 2 0 3 5 -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 equipos hay. *//* Falta: guardar cada equipo con sus DOS datos juntos, no en dos arreglos sueltos. *//* Falta: ordenar por puntaje de mayor a menor, y a igual puntaje por inscripción menor. *//* Falta: escribir lugar, inscripción y puntaje de cada equipo. *//* Falta: cerrar los dos archivos antes de terminar. */return 0;}