Olimpiada Brasileira De Informatica - Inscrições abertas para XXIV Olimpíada Brasileira de Informática - OBI ...
Inscrições abertas para XXIV Olimpíada Brasileira de Informática - OBI ...

Como funcionar bem na Olimpíada Brasileira de Informática sem complicar a vida

A Olimpiada brasileira de informatica é dividida em quatro divisões por nível de escolaridade: Miúda (5º ao 6º ano), Mirim (7º ao 9º ano), Júnior (1º ao 3º ano do ensino médio) e Senior (mesma faixa que Júnior). Cada divisão tem sua própria prova e classificação. A OBI acontece anualmente, organizada pela Universidade de Brasília junto com instituições parceiras, e é uma das competições de programação mais acessíveis do Brasil. A estrutura básica envolve duas fases. A primeira fase é teórica, com 20 questões de múltipla escolha, aplicada geralmente em agosto. A segunda fase é prática, com problemas de programação para resolver e submeter código, aplicada em outubro. Apenas os aproximadamente 300 melhores colocados de cada divisão avançam para a terceira e última fase, que é presencial.

olimpiada brasileira de informatica: o que realmente cai na prova

Eu tinha a impressão, antes de participar, de que a OBI exigia conhecimento avançado de estruturas de dados e algoritmos complexos. Isso está errado para as primeiras fases. A maioria das questões da fase 1 e fase 2 cobra lógica de programação, manipulação de strings, matemática básica, recursão simples e vetores. Árvores, grafos e dinamic programming aparecem, mas de forma bastante pontual e geralmente em níveis mais avançados da prova. Um erro comum que eu vejo constantemente: gente gastando semanas estudando segment tree ou Dijkstra quando a prova pede para você ler uma string e contar vogais. Isso não é criticar o estudante, é um erro de alocação de tempo muito frequente. A OBI premia quem consegue resolver com eficiência o que está na frente, não quem conhece o maior número de algoritmos sofisticados.

Aqui vai algo que ninguém conta direito: a fase 1 é predominantemente lógica e matemática, não programação. Tem questão sobre sequência, tabuada, contagem, posições em grade, raciocínio combinatório. Eu me preparei focando 80% do meu tempo em algoritmos e perdi points fáceis na fase 1 porque não treinei lógica pura. Recomendo reservar pelo menos 30% do tempo de estudo para questões de lógica e matemática discreta antes da primeira fase. Na fase 2, a limitação mais importante é o tempo. Você recebe 4 horas para resolver de 4 a 5 problemas, dependendo do ano. O problema mais fácil costuma ser resolvido em 20 minutos por quem está preparado. O intermediário leva entre 40 minutos e 1 hora. O difícil pode levar 2 horas ou mais. Se você não consegue pelo menos meio ponto nos dois primeiros problemas, algo está errado na sua base.

Eu enfrentei um problema específico na minha participação que ilustra bem o tipo de armadilha que aparece. Era um problema de contagem de ocorrências em uma string com substring, mas com uma restrição que eu não havia considerado: o texto podia conter caracteres especiais e acentos, e o validador fazia comparação case-sensitive estrita. Eu implementei uma solução que funcionava perfeitamente nos meus testes locais com entradas limpas, mas fallava nos casos de borda do juiz automático. A correção foi simples: normalizar todo o texto para lowercase antes de qualquer comparação e usar uma função de busca que lidasse corretamente com os acentos do padrão Unicode. Perdi cerca de 15 minutos depurando isso durante a prova. A lição foi direta: sempre testar com entradas sujas, com espaços extras, strings vazias, e casos onde o comprimento da substring é maior que o texto. Outro detalhe prático: a OBI usa o sistema de submissão do beecrowd (antigo URI Judge) ou similar. Isso significa que você precisa se adaptar ao formato de entrada e saída padrão do judge. Leitura com cin no C++, input() no Python, e principalmente atenção aos finais de linha e espaços. Um erro bobo de formatação de saída já gera Wrong Answer, mesmo com a lógica correta.

👉 Clique no botão abaixo para saber mais sobre o assunto!

preparação prática: o que funciona de verdade

O site oficial da OBI mantém um archive de provas anteriores. Esse é o recurso mais valioso e ele é gratuito. Você encontra provas de 2006 até o ano corrente, com gabaritos e, em muitos casos, solutions oficiais ou discussões nos fóruns. Comece resolviendo as provas dos últimos 5 anos, cronometrando você mesmo. Isso te dá uma noção real do que esperar. Além do archive oficial, o beecrowd tem uma categoria específica da OBI com centenas de problemas. O Codeforces também tem problemas semelhantes, especialmente nas rodadas de treino da comunidade brasileira. Para iniciantes absolutos, recomendo começar pelo beecrowd e ir subindo de dificuldade gradualmente.

Quanto à linguagem de programação: C++ é a escolha mais comum entre os competidores experientes porque oferece controle fino de performance e é amplamente suportada pelos judges. Python também é aceitável e mais rápida para prototipar, mas pode sofrer com timeouts em problemas que exigem entradas muito grandes. Se você está começando do zero, Python é mais fácil para aprender os conceitos. Se já tem alguma base, vá direto para C++ e acostume-se com a sintaxe. Aqui está uma coisa contraintuitiva que aprendi na prática: às vezes a solução mais simples e ingênua passa nos testes da OBI, mesmo sendo teoricamente ineficiente. Um algoritmo O(n²) para n=1000 pode rodar em menos de 0.1 segundos e passar tranquilamente. Não gaste tempo otimizando para O(n log n) se o O(n²) já cabe no limite de tempo. Otimização prematura é perda de tempo durante uma competição.

Na terceira fase, que é presencial e mais longa, os problemas tendem a ser mais difíceis e exigem soluções mais elaboradas. Mas para chegar lá, você precisa primeiro passar pelas duas fases online. O corte para a final varia entre 250 e 350 candidatos por divisão, dependendo do número de inscritos naquele ano.

limitações e contrapontos honestos

A OBI é uma competição excelente para iniciantes e intermediários, mas tem limitações claras. O conteúdo da fase 1 é muito voltado para lógica e menos para programação efetiva. Estudantes que são bons programadores mas fracos em matemática discreta podem ter dificuldade inesperada. Além disso, a fase 2, embora justa, ainda privilegia quem tem acesso a computador e internet estáveis para treinar. Isso é um problema estrutural que vai além do controle da organização. Para quem quer se preparar de forma mais completa e competitiva em nível internacional, a OBI é um ótimo trampolim, mas não substitui a preparação para Olimpíadas como a IOI ou competições como a Maratona de Programação da SBC. O nível da OBI é mais baixo do que essas outras competições, e isso é bom para começar, mas limita quem já está muito avançado.

Se você está começando agora, o caminho mais direto é: resolver todas as provas anteriores da sua divisão no site oficial da OBI, praticar no beecrowd focando nos problemas marcados como da OBI, e Cronometrar seu tempo em cada sessão de estudo para ter noção de quanto leva para resolver problemas de cada dificuldade. A consistência semanal é mais importante que maratonas esporádicas. Dois ou três horas por semana, durante seis meses, já faz diferença significativa. O site oficial com todas as provas e informações é obi.ifusm.edu.br. O archive de provas com gabaritos está disponível gratuitamente lá. Não existe taxa de inscrição. Qualquer escola cadastrada pode inscrever alunos, e o processo é simples: a escola se cadastra e os alunos são incluídos pelo coordenador pedagógico.