Ensayo de la sede

Guion de entrenamiento para las cuentas .cstaff y .staff
Maratón de Programación — competencia de ensayo mdp-teste-2026

Português · English · Español

Antes de empezar

Este guion toma unos treinta minutos y sirve para una sola cosa: hacer que su sede pase una vez por todo lo que va a ocurrir el día de la competencia. Un equipo entra, resuelve un problema, se equivoca a propósito y pide una impresión. Usted ve llegar el pedido, lo imprime, lo entrega y ve nacer el globo. Nada de esto cuenta — la competencia se llama ensayo justamente por eso.

Lo que falla el día de la competencia casi nunca es el juez. Es la impresora sin papel, la ventana emergente que el navegador bloqueó, la etiqueta que no entra, el globo del color equivocado. Todo eso aparece aquí, hoy, cuando todavía hay tiempo de resolverlo con calma.

Qué necesita

Quién hace qué

CuentaEn el ensayo
.cstaff — jefe de sedeLe entrega la credencial al equipo y acompaña. Ve la cola, pero no toma ni imprime: esas acciones son de .staff.
.staff — equipo de salaToma la tarea, la imprime y lleva el papel y el globo hasta la mesa. Es la cuenta que trabaja.
el equipoUna cuenta de equipo de su sede, prestada para el ensayo.

Si todavía no leyó la guía de su rol, léala antes: ahí se explica cada botón, y aquí solo los usamos. Guía del jefe de sede · Guía del equipo de sala.

Paso 1 — el jefe de sede toma una credencial

.cstaff: entre a la competencia y abra 🏷️ Badges. Esa pantalla lista los equipos de su sede con su usuario y su contraseña, listos para imprimir en etiquetas. Elija un equipo para el ensayo y anote su credencial.

La pantalla de etiquetas. Solo la abre el jefe de sede, y solo con los equipos de su sede.

Si la lista sale vacía, deténgase aquí y avise a la organización: el alcance de su sede no está configurado, y el día de la competencia usted se quedaría sin las credenciales.

Paso 2 — el equipo entra

Equipo: en la máquina con Maratona Linux, abra la dirección del ensayo y entre con la credencial del paso 1. Siente a alguien de verdad en esa silla, aunque sea usted: el ensayo solo sirve si la máquina del ensayo es la máquina de la competencia.

La puerta de entrada. Antes del inicio, esta misma pantalla muestra solo una cuenta regresiva — el formulario aparece en el minuto marcado.

En esta competencia no hay editor en el navegador, y es a propósito: así es en el Maratón. El equipo escribe el programa en un editor de la máquina, compila en la terminal y envía el archivo ya listo.

Paso 3 — el equipo resuelve el problema A

El problema A — Ola Mundo no lee nada e imprime una línea. Tome el programa del Apéndice A en el lenguaje que prefiera, guárdelo en un archivo y envíelo: haga clic en la línea del problema, elija el archivo y presione Submit.

El acordeón abierto sin editor: el enunciado ocupa todo el ancho y el envío se hace con el selector de archivo, en la misma línea del problema.

El veredicto llega solo en pocos segundos, sin recargar la página. Lo que usted quiere ver es Accepted, y la línea del problema cambia de color allá arriba.

La lista de envíos del equipo. Time es el minuto de competencia; Date es la hora del reloj.

Paso 4 — equivocarse a propósito

Ahora mande tres programas con errores, uno de cada tipo. La idea es que la sede reconozca cada veredicto cuando aparezca el día de la competencia, y que sepa que ninguno de ellos significa que el sistema esté fallando. Los programas están en el Apéndice B.

EnvíeAl problemaVa a verQuiere decir
la cuenta cambiadaB — Soma 2Wrong AnswerEl programa corrió hasta el final, y la respuesta no es la esperada.
la salida con errorC — Soma NRuntime ErrorEl programa se rompió mientras corría.
el ciclo infinitoD — EOFTime Limit ExceededEl programa tardó más de lo que el problema permite.

En una competencia, el veredicto es todo lo que el equipo recibe: ni qué prueba falló, ni el diff, ni puntaje parcial. Es a propósito — las pruebas son material de examen.

Paso 5 — el equipo pide una impresión

Equipo: abra la pestaña 🖨️ Printing, elija el archivo que acaba de enviar y presione Request printing. El pedido aparece abajo, como pending.

La pantalla del equipo: el formulario arriba, sus propios pedidos abajo, cada uno con su estado.

Un detalle que conviene aprender desde ahora: el equipo solo ve sus propios pedidos, y el número que aparece al lado es el mismo que sale impreso en la carátula. Con ese número ustedes verifican, en la mesa, que el papel llegó al equipo correcto.

Paso 6 — la sede imprime

.staff: en la máquina que tiene la impresora — Windows, macOS o cualquier Linux, nunca Maratona Linux —, abra 🖨️ Print queue. El pedido del paso 5 está ahí, arriba de todo.

La cola de la sede. Arriba, las tareas pendientes; abajo, las que ya se imprimieron y esperan entrega. Las dos líneas con 🎈 son globos.

El ciclo tiene tres pasos, siempre en el mismo orden:

  1. Claim — reserva la tarea para usted, para que dos voluntarios no impriman lo mismo.
  2. 🖨️ Print — abre el PDF en una pestaña nueva y manda a imprimir. Permita las ventanas emergentes de este sitio ahora: si el navegador bloquea la pestaña, la tarea no queda marcada como impresa y el papel desaparece de su lista.
  3. ✅ Delivered — después de entregar el papel en la mesa del equipo. Ese clic es el que le dice a la organización que el papel llegó.
Las líneas de la cola, de cerca. Fíjese en by sala.staff debajo del estado: es la marca de quien la reservó.

De la impresora sale una carátula seguida del documento del equipo. La carátula trae el nombre del equipo, la universidad, el usuario y el número de la tarea, con una línea para firmar la entrega.

La carátula. El número grande es el mismo que el equipo ve en la pantalla.

Después viene el código, en fuente monoespaciada, con la indentación del equipo y las líneas numeradas. Mire el encabezado y el pie de cada página: arriba van la fecha y el nombre del archivo, abajo van el usuario del equipo, el archivo otra vez y el número de la tarea. Eso salva el día cuando una hoja se suelta del montón — y con treinta impresiones en la mesa, siempre se suelta alguna.

El texto de esa hoja sale en portugués en todas las sedes, y es a propósito: así la mesa de entrega reconoce el mismo papel en todo el continente. El nombre del color del globo viene en dos idiomas, justamente para que coincida con el globo físico.

Paso 7 — el globo

¿Se acuerda del Accepted del paso 3? Se convirtió en una tarea de globo, y cae en la misma cola, marcada con 🎈 y con el color del problema. Y fíjese en cuándo nace: el globo se crea solo cuando alguien de la sede abre la cola. Si nadie la abre, no existe — y eso no es que el sistema esté atrasado.

La hoja del globo: una sola página, con la letra del problema, el color dibujado y su nombre escrito.

Trate el globo como cualquier otra tarea: Claim, Print y Delivered cuando el globo llegue a la mesa. Lleve la hoja junto con el globo — esa hoja es la prueba de la entrega.

Cada color pertenece a una letra, y la misma letra tiene el mismo color en todas las sedes. Compare los colores de sus globos con la hoja antes de que empiece la competencia.

Paso 8 — imprimir sin tocar nada

En una competencia llena, detenerse en cada diálogo de impresión es lo que atrasa el salón. Para eso existe el modo automático: la casilla arriba de la cola. Con ella encendida, cada tarea nueva se reserva, se imprime y se marca sola. A ustedes solo les queda la caminata hasta la mesa.

Para que el papel salga sin ningún diálogo, el navegador tiene que estar en modo kiosk printing. Cierre Chrome y ábralo otra vez así:

Linux
  google-chrome --kiosk-printing https://mdp-teste-2026.moj.naquadah.com.br/contest/staff/

Windows  (menú Inicio → clic derecho en Chrome → Propiedades → Destino)
  "C:\Program Files\Google\Chrome\Application\chrome.exe" --kiosk-printing

macOS
  open -a "Google Chrome" --args --kiosk-printing

Con Chrome en ese modo, encienda la casilla, pida otra impresión desde la ventana del equipo y no toque nada. El papel sale solo. Así es como funciona el salón el día de la competencia.

Pruebe esto hoy. El modo kiosk usa la impresora que el sistema tenga como predeterminada, y ya no pregunta nada más. Si la predeterminada es la equivocada, usted se entera ahora — y no con treinta equipos en la cola.

Paso 9 — el jefe de sede verifica

.cstaff: abra la misma cola. Usted ve todo lo que ve su equipo, con una diferencia: la columna de acciones queda vacía. No es un permiso que falta por error, es como está diseñado el rol — quien toma e imprime es el equipo de sala.

La misma cola, con los ojos del jefe: para acompañar, no para operar.

Ya que está ahí, confirme las dos cosas que solo usted alcanza a ver. La primera: la cola muestra los equipos de su sede y nada más. La segunda: las etiquetas del paso 1 coinciden con quienes se van a sentar en el salón.

Lista de verificación de la sede

Marque cada línea solo después de haberla visto ocurrir:

 Punto
El equipo entró desde una máquina con Maratona Linux.
La cuenta .staff está en una máquina que imprime — y no es Maratona Linux.
Las etiquetas de mi sede abren, y la lista tiene a mis equipos.
Un equipo entró con la credencial de la etiqueta.
Un envío volvió Accepted.
Vi los tres errores: Wrong Answer, Runtime Error y Time Limit Exceeded.
Un pedido de impresión salió en la impresora, con su carátula.
Las ventanas emergentes de este sitio están permitidas en el navegador de la sede.
El modo automático imprimió solo, con Chrome en kiosk.
La tarea de globo apareció y el color coincide con los globos que tenemos aquí.
Marqué una tarea como Delivered.
La impresora predeterminada del sistema es la del salón.

Si algo sale mal

Lo que usted veQué es
Presioné Print y no pasó nadaEl navegador bloqueó la ventana emergente. Permita las ventanas emergentes de este sitio y presione otra vez — la tarea sigue ahí, sin marca de impresa.
La cola está vacíaO nadie pidió nada, o el alcance de su sede no coincide con ningún equipo. Pídale al jefe de sede que abra las etiquetas: si también salen vacías, es el alcance.
403 al tomar o imprimirUsted está en la cuenta .cstaff. Tomar e imprimir son de la cuenta .staff.
El equipo no puede trabajar en la máquinaRevise que sea de verdad una máquina con Maratona Linux. Un editor que falta, un compilador que no está, una ruta distinta — eso es problema de máquina, no del juez, y encontrarlo hoy es para lo que sirve el ensayo.
La sede no encuentra la impresoraLa cuenta .staff está en la máquina equivocada. Tiene que correr donde esté instalada la impresora del salón — Windows, macOS o cualquier Linux. Maratona Linux es la máquina del equipo, no la del mostrador.
La credencial no entraRevise mayúsculas y minúsculas, y que la etiqueta sea de su sede. Si sigue fallando, eso es para la organización — anote el usuario y avise.
El veredicto tardaMientras dice Not Answered Yet, el envío está en la cola del juez. En una competencia llena eso toma segundos, no minutos.
Salió papel sin carátulaAlguien imprimió con Open PDF, que abre sin imprimir ni marcar. El botón del flujo es Print.
Un programa que se rompió volvió Time Limit ExceededPasa. El límite de estos problemas es cortísimo, y guardar la memoria de un proceso que reventó ya lo pasa. El reloj se acaba antes de que el juez mire por qué murió.

Apéndice A — programas que pasan

Uno por problema, en el lenguaje que su sede prefiera. Guárdelos con el nombre indicado: en Java, el nombre del archivo tiene que ser el nombre de la clase pública.

A — Ola Mundo · imprime una línea

/* sol.c */
#include <stdio.h>
int main(void) { printf("Ola Mundo\n"); return 0; }
# sol.py
print("Ola Mundo")
// Main.java
public class Main {
    public static void main(String[] args) { System.out.println("Ola Mundo"); }
}

B — Soma 2 · lee dos números y los suma

/* sol.c */
#include <stdio.h>
int main(void) {
    long a, b;
    scanf("%ld %ld", &a, &b);
    printf("%ld\n", a + b);
    return 0;
}
# sol.py
import sys
a, b = map(int, sys.stdin.read().split())
print(a + b)

C — Soma N · lee N y después N números

/* sol.c */
#include <stdio.h>
int main(void) {
    long n, x, suma = 0;
    scanf("%ld", &n);
    for (long i = 0; i < n; i++) { scanf("%ld", &x); suma += x; }
    printf("%ld\n", suma);
    return 0;
}
# sol.py
import sys
nums = list(map(int, sys.stdin.read().split()))
print(sum(nums[1:1 + nums[0]]))

D — EOF · lee hasta que la entrada se acaba y cuenta cuántos números vinieron

/* sol.c */
#include <stdio.h>
int main(void) {
    long x, cuantos = 0;
    while (scanf("%ld", &x) == 1) cuantos++;
    printf("%ld\n", cuantos);
    return 0;
}
# sol.py
import sys
print(len(sys.stdin.read().split()))

Apéndice B — programas que fallan a propósito

Wrong Answer — mándelo al problema B

El programa corre hasta el final, imprime un número, y el número está mal.

/* wa.c — multiplica en vez de sumar */
#include <stdio.h>
int main(void) {
    long a, b;
    scanf("%ld %ld", &a, &b);
    printf("%ld\n", a * b);
    return 0;
}
# wa.py
import sys
a, b = map(int, sys.stdin.read().split())
print(a * b)

Runtime Error — mándelo al problema C

El programa no llega al final: se detiene a la mitad y anuncia una falla. Es lo que pasa de verdad cuando un arreglo se desborda, cuando un divisor resulta ser cero o cuando una excepción no se atrapa.

/* rte.c */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
    long n;
    scanf("%ld", &n);
    exit(1);            /* salir con algo distinto de cero significa "salió mal" */
}
# rte.py
import sys
n = int(sys.stdin.readline())
sys.exit(1)

Time Limit Exceeded — mándelo al problema D

El programa nunca termina. El juez lo corta y devuelve el veredicto.

/* tle.c */
int main(void) { while (1) { } return 0; }
# tle.py
while True:
    pass

Guía del equipo de sala · Guía del jefe de sede · Todos los roles