Me encanta la mecánica de este concurso de programación porque es estresante, vertiginosa y ¡eliminatoria!
Y tengo que reconocer que aunque me encante no ha conseguido pasar ningún año de la segunda ronda.
La mecánica es simple:
La competición se organiza en sucesivas rondas para cada una de las cuales se da menos tiempo para resolver problemas más complejos y con una mayor exigencia en los requerimientos para no ser eliminados.
En cada ronda se presentan un conjunto de problemas a resolver mediante un programa del que se proporciona el enunciado y un caso de prueba con la solución (que no resuelto) normalmente explicada. El programa debe leer un fichero con los datos de entrada del problema y escribir un fichero de salida con las soluciones a los datos de entrada ambos ficheros de texto con un formato claramente especificado en el enunciado.
Tú tienes todo el tiempo que desees, dentro de la duración de la ronda, para resolver cada problema con los datos de prueba y los datos que tú te prepares para probar tu programa y una vez que consideras que tu programa está listo y resuelve el problema propuesto en un tiempo aceptable y considerando todos los casos imaginables te descargas el archivo real con los datos de entrada del problema de concurso donde las malvadas mentes promotoras del concurso han pensado los casos más rebuscados para que tu aplicación falle y se inicia una cuenta atrás de seis minutos en los que tienes que ejecutar el programa contra los datos del fichero descargado, corregir los errores que pueda tu programa tener al presentar casos con los que no habías contado y enviar el fichero generado por tu programa con los resultados y el fuente del programa que lo resolvió. Si el programa funciona bien a la primera y el algoritmo es suficientemente eficiente para correr en los digamos cinco minutos que te quedan para cargar y descargar archivos bien. Si el algoritmo no es eficiente y se acaba el tiempo mal. Si el programa te lanza un error entonces a la carrera tratar de ver qué ha pasado, corregirlo y volver a ejecutar, aquí está la parte estresante. Si se acaba el temporizador ya no tienes una segunda oportunidad y este problema queda sin resolver.
En cada ronda se asigna una puntuación a cada problema que depende de la dificultad del mismo, a criterio de los organizadores del concurso, obviamente. El orden de cada participante en la ronda se obtiene, en primer lugar, por la suma de los puntos obtenidos por los problemas enviados con una solución correcta. Los participantes empatados a puntos se ordenan por la suma del tiempo empleado en la resolución de los problemas (evidentemente mejor clasificación cuanto menor tiempo acumulado) computada como el tiempo desde que comenzó la ronda hasta el envío de cada una de las soluciones correctas.
La primera ronda, llamada de calificación, es la más sencilla de pasar. Tiene un plazo de 72 horas para resolver tres problemas propuestos y, para pasar esta ronda no importan ni los puntos obtenidos ni el tiempo empleado. Sólo es necesario resolver bien uno de los problemas para seguir adelante.
Las rondas se organizan en fin de semana (como no podía ser de otra manera para no penalizar a los afortunados que aún tenemos trabajo) por lo que necesitas un punto de sacrificio para sacar tiempo de ocio. Yo tengo que reconocer que fui un pelín vago y no me preocupé de solucionar más que los dos primeros problemas propuestos, como veréis sencillos, y ni pensé en el tercero (aunque voy a tratar de resolverlo, prometo). Así quedé clasificado en la posición 2369 de esta ronda con 55 puntos y 133 horas de tiempo (ya podéis imaginar que no empecé a resolverlos al comienzo de la ronda). Pasaron la ronda 6242 personas de las 7515 que presentaron soluciones.
Desde este vínculo podéis acceder a los tres problemas de la ronda
No hay comentarios:
Publicar un comentario