| Los jueces on-line son sistemas de validación de problemas que, dada una serie de entradas, compilan, ejecutan y comparan la solución original con la obtenida mediante el programa que el usuario ha introducido.
Se utilizan principalmente en concursos de programación en los que existe un límite de tiempo y una serie de requisitos, y en donde lo que cuenta no es tanto el diseño sino la funcionalidad del código. También se usan en aplicaciones docentes. | |
| ¿Te gustaría practicar antes de presentarte a la Olimpiada Murciana de Programación o simplemente por curiosidad? Pues no lo dudes, aquí tienes las herramientas necesarias. En el juez on-line de la OMP tienes ¡todos los problemas de las anteriores ediciones de la Olimpiada!
https://onlinejudge.inf.um.es/~mooshakY, si no tienes suficiente, también puedes registrarte en el juez on-line de la Universidad de Valladolid, donde encontrarás miles de problemas de la ACM/ICPC World Finals: | |
| Es muy sencillo. Cada participante/equipo tiene una cuenta de usuario propia que almacenará los resultados obtenidos durante el concurso. Una vez dentro del juez, los usuarios podrán leer los diversos enunciados correspondientes a cada uno de los problemas del concurso activo, donde se mostrarán ejemplos de entrada y de salida de cara a que el resultado sea el mismo.
Cuando el concursante tenga una implementación de alguno de los problemas, puede subirlo a través de la web. El juez on-line comunicará el resultado de la ejecución y confirmará si ha sido aceptado o ha dado error (véase la tabla "Respuestas del juez on-line" que encontrará a la derecha).
Al final, aquel participante/equipo que tenga la mayor cantidad de problemas resueltos y aceptados, ganará. En caso de empate, se tendrá en cuenta la suma de los tiempos en resolver los problemas que estén aceptados (con una penalización de 20 minutos por cada envío no aceptado, pero solo si el problema es finalmente aceptado). | |
| Como norma general, los lenguajes aceptados por el juez on-line suelen ser C/C++, Pascal y Java. Nosotros, desde el punto de vista práctico y funcional, recomendamos la utilización de C/C++ y sobre todo de C++ por su sencillez y robustez.
Si bien es cierto que en este lenguaje existen algunos inconvenientes como la liberación de memoria (cosa que Java hace automáticamente mediante su recolector de basura), la entrada/salida se simplifica de manera extraordinaria y en algunos casos el límite de memoria del juez permite no tener ni que liberarla.
Ahora bien, cada equipo es libre de presentar sus problemas en cualquiera de estos lenguajes sin ninguna diferencia entre los mismos. | |
|
|
|
| | | ¡El programa es correcto! Puede ser que durante el concurso solo se permita el uso de 10, 5, 2 o menos segundos de CPU. | |
| |
| | | Las salidas del programa son correctas pero no se presentan en la forma correcta. Se hace necesario entonces comprobar los espacios, mayúsculas/minúsculas, retornos de carro, etc. | |
| |
| | | No se da una solución correcta a las entradas. | |
| |
| | | El programa falló durante la ejecución (segmentation fault, floating point exception o similar). La causa exacta es comunicada al usuario. | |
| |
| | | El programa intentó ejecutarse durante demasiado tiempo. No significa que el programa no pudiera llegar a una solución correcta, pero es muy lento. | |
| |
| | | El programa intentó ocupar más memoria de la permitida | |
| |
| | | El programa intentó escribir demasiada información. Normalmente ocurre al caer en un bucle infinito. | |
| |
| | | El código fuente intentó utilizar una función no permitida, como fork() o fopen(). | |
| |
| | | El compilador no pudo compilar el programa. Los mensajes de salida del compilador son indicados en la web (los "Warning" también son considerados como errores). | |
| |
| | | Si un programa es enviado fuera de tiempo, obviamente no será aceptado. | |
| |
| | | Si el host del juez está demasiado ocupado, la ejecución de programas que emplean demasiados recursos es retrasada algunos segundos o minutos. No reenviar el programa, pues el juez tardará más tiempo todavía en responder. | |
| |
|
| |
|