Sobre o BOCA Dicas Úteis Antes da Prova Durante a Prova MINI MARATONA DE PROGRAMAÇÃO SOBRE O BOCA BOCA • O BOCA Online Contest Administrator é um sistema de administração de competições de programação – Disponibiliza os problemas, placar, e troca de mensagens; – Suporta usuários remotos; – Permite que os participantes enviem seus códigosfonte; – Correção automática ou personalizada; – Interface web. Tipos de Erros • O autojudge exibe uma mensagem após a correção do código-fonte enviado; • No caso de erro, uma mensagem específica é exibida para que o código-fonte seja corrigido e submetido novamente – No entanto, a mensagem nem sempre é específica sobre a localização do erro. Tipos de Erros • Wrong Answer: Resposta errada – Novamente, a bateria de testes é extensa, e embora seu programa tenha executado normalmente para os testes que você fez, há algo de errado; – Realize testes diferentes. Tipos de Erros • Compile Error: Erro de compilação – Simples assim. Tipos de Erros • Runtime Error: Erro de execução – O programa deu pau em algum dos testes realizados; – Note que a bateria de testes é extensa, e embora seu programa tenha executado normalmente para os testes que você fez, há algo de errado; – Procure por erros de memória. Tipos de Erros • Time Limit Exceeded: Tempo de execução excedido – O programa demorou demais a responder; – Não foi avaliado se a resposta está certa ou errada; – Procure por procedimentos pesados ou loops infinitos. Tipos de Erros • Presentation Error: Saída em formato errado – A resposta dada está em formato errado em relação ao que foi pedido; – Uma diferença mínima, como uma quebra de linha já é suficiente; – Note que, neste caso, não foi avaliado se a solução está certa ou errada. Código Aceito • Accepted: Código aceito. O que não é permitido • • • • Internet; Aparelhos eletrônicos; Comunicação externa; Chamadas de sistema. ANTES DA PROVA Antes da Prova • Ir ao banheiro; • Levar bebida e comida – Exceção; – Manter os laboratórios limpos; – Nada disso sobre a mesa. • Levar papel para rascunho, e canetas; • Levar material impresso – STL, para quem usa. Antes da Prova • Laboratórios abertos às 18:30; • Criar códigos padrão – Uma cópia para cada exercício. • Deixar editores e terminal preparados. Exemplo de Código Padrão #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cctype> #include <algorithm> #include <map> #include <queue> #include <stack> #include <vector> #include <iostream> using namespace std; const int INF = 0x3F3F3F3F; const int NULO = -1; const double EPS = 1e-10; _inline(int cmp)(double x, double y = 0, double tol = EPS) { return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1; } int main(){ int i, j; return 0; } DURANTE A PROVA Início da Prova • Estabeleça uma regra para o rodízio do computador – Quem começa programando? – Quem entra na sequência? – Quem vai liderar? • Cada aluno pega um problema diferente – Quem não está no computador, programa no papel; – Depois transfere para o computador. Início da Prova • No início, um aluno não ajuda ao outro, pois os problemas são fáceis – Cada um com o seu; – Maior produtividade; • Os alunos se comunicam entre si para dividir a prova – Evita que 2 façam o mesmo problema; – O time não pode ficar todo concentrado em um único problema no início da prova. Início da Prova • Procure os exercícios mais fáceis e os marque – “Dá pra fazer” é diferente de “fácil”; • Leia a prova toda (na diagonal) – Não pare no primeiro fácil. • Não se deixe iludir pelo tamanho do enunciado – Enunciado pequeno não implica em problema fácil. • Dê uma olhada nos exemplos de entrada e saída – Problemas fáceis tem dados fáceis. • Deixe os problemas difíceis para o final. Durante a Prova • Ainda assim, não sei qual problema devo resolver – Olhe o placar no BOCA (score) e veja quais são os problemas mais resolvidos; • Certamente são os mais fáceis. – Talvez o problema que você achou fácil não o seja • Se poucas equipes os resolveram… • Agarrei em um problema – Já o submeti x vezes… – Saia do computador e parta para outro. Durante a Prova • É necessário se policiar quanto ao nervosismo – Se está perdido em um problema, não insista muito; – Respire e passe para outro. • É necessário ter consciência de que você pode não estar contribuindo – Você pode ser “despejado” do computador; – Ouça seus parceiros. Durante a Prova • Não submeta um código sem compilar e testar – Mesmo que tenha feito somente uma alteração mínima; – Não vale a pena tomar um pênalti. • Depois de submeter um problema, não fique parado esperando a resposta – Resolva outro problema, a resposta pode demorar; – Cheque a resposta de vez em quando. Durante a Prova • Se houver alguma dúvida a respeito de enunciado/correção, use o clarification – Envio e resposta pelo próprio BOCA; – Respostas não muito específicas; – Não haverá resposta oral; – A dúvida pode ser respondida só para quem perguntou ou para todos • Dê uma olhada nos clarifications de vez em quando. Durante a Prova • Resolvi meu primeiro problema e o primeiro colocado já resolveu 5, é o fim? – Não, a maioria dos problemas é resolvida na primeira metade do tempo; – Depois a velocidade diminui muito; – Se o primeiro colocado tomou muitos pênaltis, ele pode ser ultrapassado; – Os outros problemas podem ajudar. Final de Prova • O cansaço bate, o cérebro falha… – Beba água, vá ao banheiro. • O time pode se reunir para resolver um único problema – Provavelmente um dos mais difíceis; – Olhe os problemas mais resolvidos e que o seu time não resolveu; – Não se deixe levar apenas pela equipe que está liderando. Final de Prova • Faltando 60 minutos para o fim, o placar é congelado – Ninguém sabe se foi ultrapassado ou se ultrapassou outro time; – Os times sabem se acertaram ou não os problemas. • Faltando 30 minutos, os times não recebem mais as respostas sobre suas submissões – Mas continuam sendo avaliados; – A competição não termina. Final de Prova • Esta última etapa é muito importante – Partir pro tudo ou nada; – Prepare algum código e o submeta; – Altere algo que pode estar errado e submeta de novo; – Faça umas 10 submissões para cada problema que faltar • Se acertar, os penâltis posteriores não serão considerados. • O final geralmente é frenético. DICAS ÚTEIS Dicas Úteis • Fique atento ao intervalo dos valores da entrada e saída – Overflow aritmético. • Não esquecer do return 0 ao final; • Toda linha termina com ‘\n’ – Causa Presentation Error. Dicas Úteis • Em todos os problemas que veremos, os dados são lidos da entrada padrão e escritos na saída padrão – Nada de abrir arquivos ou chamadas de sistema. • Nos testes, utilizaremos redirecionamento da entrada – ./programa < entrada.txt Dicas Úteis • Existem um aspecto importantes sobre a leitura de dados – Até quando ler? • Diz respeito ao término da entrada – Número fixo de valores, valor especial ou EOF. • O enunciado do problema deve ser lido atentamente – A codificação da leitura dos dados não deve ser um processo lento. MERCHANDISING Merchandising • Temos um projeto aprovado pela FAPEMIG exclusivamente para treinamento para Maratona de Programação – – – – 3 bolsas de R$ 350,00 por um ano (12 parcelas); 3 computadores; Material didático e de divulgação; Financiamento de transporte, hospedagem e alimentação para participação em eventos. • Disciplina eletiva BCC402 – Algoritmos e Programação Avançada. Merchandising • Competições previstas: – 1a Maratona Mineira de Programação • Uberlândia, 26 de Maio. – Seletivas da Universidade do Estado de Santa Catarina • Online, 1 de Junho. – Maratona Nacional de Programação • 15 de Setembro. – Final Nacional • Londrina, 9 e 10 de Novembro. Perguntas? Até Amanhã!