Resumen juzgare DOM DOMjudge equipo Manual /\ Esta página ofrece un breve resumen de la interfaz del sistema. El resumen pretende ser una introducción rápida, para poder comenzar a usar el sistema. Sin embargo, se recomienda encarecidamente que su equipo lea todo el documento. Hay detalles específicos de este sistema de control de concursos que pueden llegar a ser importantes cuando se encuentra con problemas. ¡CUIDADO! DOMjudge funciona a través de una interfaz web que se puede encontrar en https://example.com/domjudge/ equipo. Vea las figuras 1 yd 2 en la página siguiente para una impresión. Lectura y escritura Las soluciones tienen que leer toda la entrada de 'entrada estándar' y escribir toda la salida en 'salida estándar' (también conocida como consola). Nunca tendrá que abrir (otros) archivos. Consulte el apéndice A para ver algunos ejemplos de código. Envío de soluciones Puede enviar soluciones con el programa de línea de comandos submit o desde la interfaz web: Línea de comandos Utilice submit <filename>. Si su nombre de archivo tiene el formato <problemextensión >.<> donde <problema> es la etiqueta del problema y <extensión> es una extensión estándar para su idioma, entonces estos se detectarán automáticamente. También intentará detectar automáticamente el cla ss principal(para Java y Kotlin) o el archivo principal (para Python 2 y Python 3). Puede anular estas detecciones automáticas; para obtener una referencia completa de todas las opciones y ejemplos, consulte enviar --ayuda. Interfaz web En la página de su equipo, https://example.com/domjudge/team, haga clic en el botón verde Enviar en la barra de menús. Seleccione los archivos que desea enviar. De forma predeterminada, el problema se selecciona desde la base del (primer) nombre de archivo y la nguagede laextensión. La interfaz web intenta detectar automáticamente la clase principal (para Java y Kotlin) o el archivo principal (para Python 2 y Python 3) desde el nombre del archivo. Verifique que la suposición sea correcta antes de enviarla. Visualización de puntuaciones, envíos, etc. La visualización de puntajes, envíos y envío y lectura de solicitudes de aclaración y respuestas se realiza a través de la interfaz web en https://example.com/domjudge/team. CASAjuez equipo Manual – Generado: Mayo 6, 2020 1 Fin del resumen 2 CASAjuez equipo Manual – Generado: Mayo 6, 2020 Figura 1: Página de información general de la interfaz web del equipo. Figura 2: Página web del cuadro de indicadores. CASAjuez equipo Manual – Generado: Mayo 6, 2020 3 1. Presentar Soluciones 1 Envío de soluciones El envío de soluciones se puede hacer de dos maneras: con el programa de línea de comandos submit o utilizando la interfaz web. Es posible que una de las interfaces no esté disponible, dependiendo de la configuración del sistema por parte del jurado. A continuación se realiza una descripción de ambos métodos. 1.1 Línea de comandos: enviar Sintaxis: submit [options] filename.ext ... El programa de envío toma el nombre (etiqueta) del problema del nombre de archivo y el lenguaje de programación de la extensión ext. Para Java utiliza el nombre de archivo como una suposición para la clase principal; para Kotlin, escribe en mayúsculas el nombre de archivo y agrega Kt para calcular la suposición del nombre de la clase principal. Para Python 2 y 3, el primer nombre de archivo se utiliza como una suposición para el archivo principal. Estas conjeturas se pueden anular con las opciones -p problemname, -l languageextension y -e punto de entrada. Consulte enviar --ayuda para obtener una lista completa de todas las opciones, extensiones y algunos ejemplos. Use enviar --help | más cuando el texto de ayuda no cabe en una pantalla. submit comprobará su archivo y le advertirá de algunos problemas: por ejemplo, cuando el archivo no se ha modificado durante mucho tiempo o cuando es mayor que el tamaño máximo del código fuente (consulte la sección 4.4). Los nombres de archivo deben comenzar con un carácter alfanumérico y pueden contener solo caracteres alfanuméricos y +. -. Puede especificar varios archivos para que formen parte de este envío (consulte la sección 4 «¿Cómo se juzgan los envíos?»). A continuación, enviar muestra un resumen con todos los detalles de su envío y solicita confirmación. Verifique si está enviando el archivo correcto para el problema y el idioma correctos y presione 'y' para confirmar. submit informará de un envío correcto o dará un mensaje de error de lo contrario. 1.2 Interfaz web Las soluciones se pueden enviar desde la interfaz web en https://example.com/domjudge/team. Haga clic en el botón verde Enviar en la barra de menú de cada página. Haga clic en el botón de selección de archivos y seleccione uno o varios archivos para su envío. Eljuez DOM intentará determine el problema, el lenguaje y la clase principal (en el caso de Java y Kotlin) o el archivo principal (en el caso de Python 2 y 3) desde la base y la extensión del primer nombre de archivo. De lo contrario, seleccione los valores apropiados. Los nombres de archivo deben comenzar con un carácter alfanumérico y pueden contener solo caracteres alfanuméricos y +. -. Después de presionar el botón de envío y confirmar el envío,será redirigido de nuevo a su página de lista de envíos. En esta página, se mostrará un mensaje que indica que su envío se realizó correctamente y que el envío debe estar presente en la lista. Se mostrará un mensaje de error si algo salió mal. CASAjuez equipo Manual – Generado: Mayo 6, 2020 3 2. Visionado el Resultados de Presentaciones 2 Visualización de los resultados de los envíos La columna izquierda de la página web de su equipo muestra una descripción general de sus envíos. Contiene toda la información relevante: tiempo de envío, lenguaje de programación, problema y estado. La dirección de la página de tu equipo es https://example.com/domjudge/team. 4 CASAjuez equipo Manual – Generado: Mayo 6, 2020 1. Presentar Soluciones La parte superior de la página muestra la fila de tu equipo en el marcador: tu posición y qué problemas intentaste y resolviste. A través del menú puede ver la página del marcador público con los puntajes de todos los equipos. Muchas celdas mostrarán información adicional de "texto de título" al pasar el cursor sobre ellas. La columna de puntuación enumera el número de problemas resueltos y el tiempo total, incluido el tiempo de penalización. Cada celda de una columna de problema enumera el número de envíos y, si se resolvió el problema, la hora del primer envío correcto en minutos desde el inicio del concurso. Esto se incluye en su tiempo total junto con cualquier tiempo de penalización incurrido por envíos incorrectos anteriores. Opcionalmente, el marcador puede ser 'congelado' algún tiempo antes del final del concurso. La vista completa del marcador ya no se actualizará, pero la fila de su equipo sí. El rango de tu equipo se mostrará como '?'. Finalmente, a través del menú superior también puede ver la lista de problemas y ver / descargar textos de problemas y datos de muestra, si los jueces lo proporcionan. 2.1 Posibles resultados Un envío puede tener los siguientes resultados (no todos estos pueden estar disponibles dependiendo de la configuración del sistema): CORRECTO El envío pasó todas las pruebas: ¡resolviste este problema! Los envíos correctos no incurren en tiempo de penalización. COMPILER-ERROR Se ha producido un error al compilar el programa. En la página de detalles del envío, puede inspeccionar el error exacto (esta opción podría estar deshabilitada). Tenga en cuenta que cuando la compilación tarda más de 30 segundos, se anula y esto cuenta como unerror de compilación. Los errores de compilación no incurren en tiempo de penalización. LÍMITE DE TIEMPO El programa tardó más que el tiempo máximo permitido para este problema. Por lo tanto, ha sido abortado. Esto podría indicar que el programa se bloquea en un bucle o que la solución no es lo suficientemente eficiente. RUN-ERROR Se ha producido un error durante la ejecución del programa. Esto puede tener muchas causas diferentes, como la división por cero, la dirección incorrecta de la memoria (porejemplo, al indexar matrices fuera de los límites), tratar de usar más memoria que el límite, etc. ¡Compruebe también que su programa sale con el código de salida 0! NO-OUTPUT Su programa no generó ningún resultado. Comprueba que escribes a estándar. OUTPUT-LIMIT El programa generó más salida que el límite permitido. La salida se truncó y se consideró incorrecta. RESPUESTA INCORRECTA La salida de su programa fue incorrecta. Esto puede suceder simplemente porque su solución no es correcta, pero recuerde que su salida debecumplir exactamente con las especificaciones de los jueces. Consulte la sección 4.3 a continuación para obtener más CASAjuez equipo Manual – Generado: Mayo 6, 5 2020 2. Visionado el Resultados de Presentaciones detalles. ¡DEMASIADO TARDE 6 Bummer, te presentaste después de que terminó el concurso! Su envío se almacena pero ya no se procesará. CASAjuez equipo Manual – Generado: Mayo 6, 2020 3. Aclaraciones Tenga en cuenta que los jueces pueden haber preparado varios archivos de prueba para cada problema. Eljuez de DOM informará el primer resultado incorrecto como veredicto. 3 Aclaraciones Toda la comunicación con los jueces debe hacerse a través de aclaraciones. Estos se pueden encontrar en la columna de la derecha en la página de su equipo. Tanto las respuestas aclaratorias de los jueces como las solicitudes enviadas por usted se muestran allí. También hay un botón para presentar una nueva solicitud de aclaración a los jueces; puede asociar un problema específico o una de las categorías generales a una solicitud. Esta solicitud de aclaración sólo es legible para los jueces. Los jueces pueden responder específicamentea su equipo o enviar una respuesta a todos si es relevante para todos. 4 ¿Cómo se juzgan las presentaciones? El sistema de control de concursos de jueces DOM está totalmente automatizado. La evaluación se realiza de la siguiente manera: 4.1 Envío de soluciones Con el programa de presentación o la interfaz web (ver sección 1)se puede presentar unasolución a un problema a los jueces. Tenga en cuenta que debe enviar el código fuente de su programa (y no un programa compilado o la salida de su programa). En el sistema de control de concursos su programa entra en una cola, a la espera de compilación, ejecución y prueba en uno de los autojuzgazos. 4.2 Compilación Su programa se compilará en una máquina de autojuzgue que ejecute Linux. Todos los archivos fuente enviados se pasarán al compilador que genera un solo programa para ejecutar. Para Java y Kotlin se verificará la clase principal dada; para Python 2 y Python 3 hacemos una comprobación de sintaxis utilizando el módulo de compilación py. 4.3 Ensayo Después de que su programa se haya compilado con éxito, se ejecutará y su salida se comparará con la salida de los jueces. Antes de comparar la salida, se verifica el estado de salida de su programa: si su programa sale con un código de salida distinto de cero, el resultado será una EJECUCIÓN:¡error incluso si la salida del programa es correcta! Hay algunas restricciones durante la ejecución. Si su programa infringe estos, también se cancelará con un ERROR DE EJECUCIÓN,consultela sección 4.4. Al comparar la salida del programa, tiene que coincidir exactamente con la salida de los jue ces, excepto que se puede ignorar algún espacio en blanco adicional (esto depende de la configuración CASAjuez equipo Manual – Generado: Mayo 6, 2020 5 4. Cómo son Presentaciones ser ¿Juzgado? del sistema de los problemas). Así que tenga cuidado de quesiga lasespecificaciones de salida. En caso de declaraciones de problemas que no tienen una salida única (porejemplo, con respuestas de coma flotante), el sistema puede utilizar una función de comparación modificada. Esto se documentará en la descripción del problema. 6 CASAjuez equipo Manual – Generado: Mayo 6, 2020 3. Aclaraciones 4.4 Restricciones Para evitar abusos, mantener estable el sistema de jurados y dar a todos entornos claros e iguales, hay algunas restricciones a las que se someten todas las presentaciones: Tiempode compilación La compilación de su programa no puede tardar más de 30 segundos. Después de eso, la compilación se ab orted y el resultado será un error de compilación. En la práctica, esto nunca debería dar lugar a problemas. Si esto le sucede a un programa normal, informe a los jueces de inmediato. Tamaño dela fuente La cantidad total de código fuente en un solo envío no puede exceder los 256 kilobytes, de lo contrario su envío será rechazado. memoria Los jueces especificarán cuánta memoria tiene disponible durante la ejecución de su programa. Tenga en cuenta que esto puede variar según el problema. Esta es la cantidad total de memoria (incluyendo código de programa, estáticamente y dynami- variables definidas, pila, Java VM, . . . ) ! Si su programa intenta usar más memoria, lo más probable es que se cancele, lo que provocará un error de ejecución. número de procesos No se supone que deba crear explícitamente varios procesos (subprocesos). Esto es en vano de todos modos, porque su programa tiene exactamente 1 núcleo de procesador completamente a su disposición. Para aumentar la estabilidad del sistema, el juez DOMejecuta los envíos en un espacio aislado donde se pueden ejecutar un máximo de 15 procesos simultáneamente (incluidos los procesos que iniciaron su programa). Las personas que nunca han programado con procesos multiple (o nunca han oído hablar de "hilos") no tienen que preocuparse: un programa normal se ejecuta en un proceso. CASAjuez equipo Manual – Generado: Mayo 6, 2020 7 Un. Código Ejemplos Ejemplos de código A continuación se muestran algunos ejemplos sobre cómo leer la entrada y la salida de escritura para un problema. Los ejemplos son soluciones para el siguiente problema: la primera línea de la entrada contiene el número de casos de prueba. Luego, cada caso de prueba consiste en una línea que contiene un nombre (una sola palabra) de un máximo de 99 caracteres. Para cada caso de prueba, la cadena "Hello <name>!" en una línea separada. Entrada y salida de ejemplo para este problema: Entrada Salida 3 mundo Ene SantaClaus ¡Hola mundo! Hola Jan! Hola SantaClaus! Tenga en cuenta que el número 3 en la primera línea indica que siguen 3 casos de prueba. Una solución para este problema en C: #include > stdio.hde < Int principal() { Int i, ntests; número char[ 100]; scanf("%d\n", &ntests); para (i = 0; i < ntests; i++) { scanf("%s\n",número); printf("Hola %s! \n", número); } } CASAjuez equipo Manual – Generado: Mayo 6, 2020 7 Un. Código Ejemplos Una solución en C++: #include <>#include<strin g> usar el espacio de nombres STD; Int principal() { Int ntests; número de cadena; cin >> ntests; para (Int Yo = 0; i < ntests; i++) { número >> cin; costar << "Hola" << número << "!" << Edwards; } en Java: Una solución } importar java.util.*; clase Principal { público estático vacío principal(Cuerda[] args) { Escáner de escáner = nuevo escáner(Sistema. en); Int nPruebas = escáner. nextInt(); para (Int i = 0; i < nPruebas; i++) { Número de cadena = escáner. siguiente(); Sistema. fuera. Println("Hola" + número + "!" ); } } } Una solución en Python: importar sys n = Int(entrada()) para Yo en rangon): número = sys. stdin. línea de lectura(). rstrip('\n') Impresión('¡Hola %s!» % (número)) 8 CASAjuez equipo Manual – Generado: Mayo 6, 2020 Un. Código Ejemplos Una solución en C#: utilizando el sistema; clase pública Hola { público estático vacío Principal(cuerda[] args) { Int nPruebas = Int. Analizar(Consola.ReadLine()); para (Int Yo = 0; i < nPruebas; i++) { número de cadena = Consola.ReadLine(); Console.WriteLine("Hola" +número+"!" ); } } } Una solución en Pascal: ejemplo de programa(entrada, salida); Dónde ntests, prueba : entero; número : cadena[100]; empezar readln(ntests); para la prueba: = 1 un npruebas comienzan readln(número); writeln('Hola', número '!' ); fin; fin. Y finalmente una solución en Haskell: Importar Preludio principal :: Yo () principal = del entrada <- getContents putStr. unlines. mapa (\x -> "Hola" entrada CASAjuez equipo Manual – Generado: Mayo 6, 2020 ++ x ++ "!" ). cola. líneas $ 9