Ensaio da sede

Roteiro de treinamento para as contas .cstaff e .staff
Maratona de Programação — contest de ensaio mdp-teste-2026

Português · English · Español

Antes de começar

Este roteiro leva cerca de trinta minutos e serve para uma coisa só: fazer a sua sede passar uma vez por tudo o que vai acontecer no dia da prova. Um time entra, resolve um problema, erra de propósito e pede uma impressão. Você vê o pedido chegar, imprime, entrega e vê o balão nascer. Nada disso vale nota — o contest se chama ensaio porque é exatamente isso.

O que dá errado no dia da prova quase nunca é o juiz. É a impressora sem papel, o pop-up bloqueado no navegador, a etiqueta que não loga, o balão da cor errada. Todos esses aparecem aqui, hoje, quando ainda dá para resolver com calma.

O que você precisa

Quem faz o quê

ContaNo ensaio
.cstaff — chefe de sedeEntrega a credencial ao time e acompanha. Ele a fila, mas não pega nem imprime: essas ações são do .staff.
.staff — equipe de salaPega a tarefa, imprime, entrega o papel e o balão. É a conta que trabalha.
o timeUma conta de time da sua sede, emprestada para o ensaio.

Se você ainda não leu o guia do seu papel, leia antes: lá cada botão é explicado, e aqui a gente só usa. Guia do chefe de sede · Guia da equipe de sala.

Passo 1 — o chefe de sede pega uma credencial

.cstaff: entre no contest e abra 🏷️ Badges. Essa tela lista os times da sua sede com o login e a senha, prontos para imprimir em etiqueta. Escolha um time para o ensaio e anote a credencial dele.

A tela de etiquetas. Só o chefe de sede a abre, e só com os times da sede dele.

Se a lista vier vazia, pare aqui e fale com a organização: o escopo da sua sede não está configurado, e no dia da prova você ficaria sem as credenciais.

Passo 2 — o time entra

Time: na máquina com Maratona Linux, abra o endereço do ensaio e entre com a credencial do passo 1. Sente alguém de verdade na cadeira, mesmo que seja você: o ensaio só serve se a máquina do ensaio for a máquina da prova.

A porta de entrada. Antes do início da prova, esta tela mostra só uma contagem regressiva — o formulário aparece no minuto marcado.

Neste contest não existe editor no navegador, e isso é de propósito: é assim na Maratona. O time escreve o programa num editor da própria máquina, compila no terminal e envia o arquivo pronto.

Passo 3 — o time resolve o problema A

O problema A — Ola Mundo não lê nada e imprime uma linha. Copie o programa do Apêndice A na linguagem que você preferir, salve num arquivo e envie: clique na linha do problema A, escolha o arquivo e aperte Submit.

A sanfona aberta sem o editor: o enunciado ocupa a largura toda e o envio é pelo seletor de arquivo, na própria linha do problema.

Em poucos segundos o veredicto chega sozinho, sem recarregar a página. O que você quer ver é Accepted, e a linha do problema A muda de cor lá em cima.

A lista de submissões do time. Time é o minuto de prova; Date é a hora do relógio.

Passo 4 — errar de propósito

Agora mande três programas errados, um de cada tipo. O objetivo é a sede reconhecer cada veredicto quando ele aparecer no dia da prova, e saber que nenhum deles é defeito do sistema. Os programas estão no Apêndice B.

EnvieNo problemaVocê vai verQuer dizer
a soma trocadaB — Soma 2Wrong AnswerO programa rodou até o fim, e a resposta não é a esperada.
a saída com erroC — Soma NRuntime ErrorO programa quebrou durante a execução.
o laço infinitoD — EOFTime Limit ExceededO programa passou do tempo que o problema permite.

Numa prova, o veredicto é tudo o que o time recebe: nada de qual teste falhou, nada de diff, nada de nota parcial. Isso é de propósito — os testes são material de prova.

Passo 5 — o time pede uma impressão

Time: abra a aba 🖨️ Printing, escolha o arquivo que você acabou de enviar e aperte Request printing. O pedido aparece logo abaixo, como pending.

A tela do time: o formulário em cima, os pedidos dele embaixo, cada um com o estado.

Um detalhe que vale saber agora: o time só vê os pedidos dele, e o número que aparece ao lado é o mesmo que sai impresso na folha de rosto. É por ele que vocês conferem, na mesa, se o papel foi para o time certo.

Passo 6 — a sede imprime

.staff: na máquina que tem a impressora — Windows, macOS ou qualquer Linux, nunca o Maratona Linux —, abra 🖨️ Print queue. O pedido do passo 5 está lá, no alto da fila.

A fila da sede. Em cima, as tarefas pendentes; embaixo, as que já foram impressas e esperam entrega. As duas linhas com 🎈 são balões.

O ciclo tem três passos, sempre na mesma ordem:

  1. Claim — reserva a tarefa para você, para dois voluntários não imprimirem a mesma coisa.
  2. 🖨️ Print — abre o PDF numa aba nova e chama a impressão. Libere os pop-ups deste site agora: se o navegador bloquear a aba, a tarefa não é marcada como impressa, e o papel some da sua conta.
  3. ✅ Delivered — depois de entregar o papel na mesa do time. Esse clique é o que diz à organização que o papel chegou.
As linhas da fila, de perto. Repare em by sala.staff embaixo do estado: é a marca de quem reservou.

O que sai na impressora é uma folha de rosto seguida do documento do time. A folha traz o nome do time, a universidade, o login e o número da tarefa, com uma linha para assinar a entrega.

A folha de rosto. O número grande é o mesmo que o time vê na tela.

Depois dela vem o código, em fonte monoespaçada, com a indentação do time e as linhas numeradas. Repare no alto e no rodapé de cada página: em cima ficam a data e o nome do arquivo, embaixo ficam o login do time, o arquivo de novo e o número da tarefa. É o que salva o dia quando uma folha se solta do bolo — e, com trinta impressões na mesa, uma sempre se solta.

O texto dessa folha sai em português, em qualquer sede — foi feito assim de propósito, para que a mesa de entrega reconheça o mesmo papel em todo o continente. O nome da cor do balão vem nos dois idiomas, justamente para casar com o balão físico.

Passo 7 — o balão

Lembra do Accepted do passo 3? Ele virou uma tarefa de balão, e ela aparece na mesma fila, marcada com 🎈 e com a cor do problema. E repare em quando ela nasce: o balão só é criado quando alguém da sede abre a fila. Se ninguém abrir, ele não existe — não é atraso do sistema.

A folha do balão: uma página só, com a letra do problema, a cor desenhada e o nome dela por extenso.

Trate o balão como qualquer outra tarefa: Claim, Print, e Delivered quando o balão chegar à mesa. Leve a folha junto com o balão — é ela que prova a entrega.

Cada cor pertence a uma letra, e a mesma letra tem a mesma cor em todas as sedes. Confira as cores dos seus balões contra a folha antes da prova começar.

Passo 8 — imprimir sem apertar nada

Numa prova cheia, parar em cada diálogo de impressão é o que atrasa a sala. Por isso existe o modo automático: a caixinha no alto da fila. Com ela ligada, cada tarefa nova é reservada, impressa e marcada sozinha. Sobra para vocês só a caminhada até a mesa.

Para o papel sair sem nenhum diálogo, o navegador precisa estar em modo kiosk printing. Feche o Chrome e abra de novo assim:

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

Windows  (Menu Iniciar → botão direito no Chrome → Propriedades → Destino)
  "C:\Program Files\Google\Chrome\Application\chrome.exe" --kiosk-printing

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

Com o Chrome nesse modo, ligue a caixinha, peça outra impressão pela janela do time e não toque em nada. O papel sai sozinho. É assim que a sala roda no dia.

Teste isso hoje. O modo kiosk usa a impressora que estiver como padrão no sistema, e não pergunta mais nada. Se a padrão for a errada, você descobre agora — e não com trinta times na fila.

Passo 9 — o chefe de sede confere

.cstaff: abra a mesma fila. Você vê tudo o que a sua equipe vê, com uma diferença: a coluna de ações fica vazia. Isso não é falta de permissão por engano, é o desenho do papel — quem pega e imprime é a equipe de sala.

A mesma fila, pelos olhos do chefe: para acompanhar, não para operar.

Aproveite e confirme as duas coisas que só você enxerga. A primeira: a fila mostra os times da sua sede e só eles. A segunda: as etiquetas do passo 1 batem com quem vai sentar na sala.

Checklist da sede

Marque cada linha só depois de ter visto acontecer:

 Item
O time entrou de uma máquina com Maratona Linux.
A conta .staff está numa máquina que imprime — e não é o Maratona Linux.
As etiquetas da minha sede abrem, e a lista tem os meus times.
Um time entrou com a credencial da etiqueta.
Uma submissão voltou Accepted.
Vi os três erros: Wrong Answer, Runtime Error e Time Limit Exceeded.
Um pedido de impressão saiu na impressora, com a folha de rosto.
Os pop-ups deste site estão liberados no navegador da sede.
O modo automático imprimiu sozinho, com o Chrome em kiosk.
A tarefa de balão apareceu e a cor bate com os balões que temos aqui.
Marquei uma tarefa como Delivered.
A impressora padrão do sistema é a da sala.

Se der errado

O que você vêO que é
Apertei Print e nada aconteceuO navegador bloqueou o pop-up. Libere os pop-ups deste site e aperte de novo — a tarefa continua lá, sem marca de impressa.
A fila está vaziaOu ninguém pediu nada, ou o escopo da sua sede não casa com nenhum time. Peça ao chefe de sede para conferir as etiquetas: se elas também estiverem vazias, é o escopo.
403 ao pegar ou imprimirVocê está na conta .cstaff. Pegar e imprimir são da conta .staff.
O time não consegue trabalhar na máquinaConfira se a máquina é mesmo a do Maratona Linux. Editor que falta, compilador que não existe e caminho diferente são problema de máquina, não do juiz — e é para achá-los hoje que o ensaio existe.
A sede não acha a impressoraA conta .staff está na máquina errada. Ela tem de rodar onde a impressora da sala está instalada — Windows, macOS ou um Linux qualquer. O Maratona Linux é a máquina do time, não a do balcão.
A credencial não logaConfira maiúsculas e minúsculas, e que a etiqueta é da sua sede. Se persistir, é caso para a organização — anote o login e avise.
O veredicto demoraEnquanto está Not Answered Yet, a submissão está na fila do juiz. Numa prova cheia isso leva alguns segundos, não minutos.
Saiu papel sem a folha de rostoAlguém imprimiu pelo Open PDF, que abre sem imprimir nem marcar. O botão do fluxo é o Print.
Um programa que quebrou voltou Time Limit ExceededAcontece. O limite destes problemas é curtíssimo, e salvar a memória de um processo que estourou já passa dele. O relógio bate antes de o juiz olhar o motivo da queda.

Apêndice A — programas que passam

Um por problema, na linguagem que a sua sede preferir. Salve com o nome indicado: em Java, o nome do arquivo tem de ser o nome da classe pública.

A — Ola Mundo · imprime uma linha

/* 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 · lê dois números e soma

/* 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 · lê N e depois N números

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

D — EOF · lê até a entrada acabar e conta quantos números vieram

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

Apêndice B — programas que erram de propósito

Wrong Answer — mande no problema B

O programa roda até o fim, imprime um número, e o número está errado.

/* wa.c — multiplica em vez de somar */
#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 — mande no problema C

O programa não chega ao fim: ele para no meio, anunciando erro. É o que acontece de verdade quando um vetor estoura, uma divisão dá zero no divisor ou uma exceção não é tratada.

/* rte.c */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
    long n;
    scanf("%ld", &n);
    exit(1);            /* sair com qualquer coisa diferente de zero é "deu errado" */
}
# rte.py
import sys
n = int(sys.stdin.readline())
sys.exit(1)

Time Limit Exceeded — mande no problema D

O programa nunca termina. O juiz corta e devolve o veredicto.

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

Guia da equipe de sala · Guia do chefe de sede · Todos os papéis