Esse post é uma edição do 395 pontos!
Utilizando uns programas Bash que eu fiz, acho que fui o primeiro a ver meu resultado da Olimpíada Brasileira de Informática 2005, seguindo links do Mapa do Conteúdo que foram aparecendo em alguns momentos da tarde do dia 06/06 (e, misteriosamente, sumindo logo após). Para minha surpresa, fiz 395 dos 400 pontos possíveis!
Só errei um teste na prova (o teste 3 da questão Trilhas), o que me garantiu a única medalha de ouro da Programação Nível 1 e primeiro lugar isolado.
O segundo lugar, de Fortaleza, fez 300 pontos.
Agora vou pra UNICAMP em julho fazer o curso de programação avançada (com tópicos muito legais, que vão acabar com muitas dúvidas minhas – como Programação Dinâmica e Algoritmos Gulosos) disputar uma vaga na IOI na Polônia. Acho difícil conseguir vencer, até porque cinco pessoas gabaritaram a Programação Nível 2 (ou seis?), mas vou me esforçar para chegar o mais perto possível das quatro vagas.
Programas em Bash usados para ver o resultado antes do normal
Primeiro Programa
#!/bin/bash
musica="/ntfs/Program Files/MSN Messenger/type.wav"
endereco="http://olimpiada.ic.unicamp.br"
mv ~/.obi ~/.obi-o > /dev/null 2> /dev/null
lynx -source "$endereco" > ~/.obi
if [ "`cat ~/.obi`" = "`cat ~/.obi-o`" ]; then
echo "34m1mO site da OBI não foi atualizado desde a última vez que o programa foi executado.�m"
else
echo "31m1mO site da OBI foi atualizado desde a última vez que o programa foi executado!�m"
play "$musica"
firefox "$endereco"
fi
Este programa verifica quando o site é atualizado. Quando a música tocou, o navegador se abriu e vi que apareceu um novo link (Copy of …)
Segundo Programa
#!/bin/bash
action=""
logurl=""
echo "compet_type=3&school_name=&school_city=&school_state=choose&compet_name=&order=compet_id&batch_size=10000&show=Consulta" \
| lynx -source -post-data "$action" > .t
grep "MostraLog" .t > .t2 #sim, eu sei que não precisava de tantos arquivos
sed -e 's/<a href="MostraLog?id=(.*)">.*</a>/1/' .t2 > .t3 #tá, eu sei que eu devia ter usado [0-9]+ mas não é necessário
for i in `cat .t3`; do
printf "34m1mVerificando id $i...�m"
lynx -dump "$logurl?id=$i" | grep "Total de pontos" > .t4
pontuacao=`sed -e 's/Total de pontos: (.*)/1/' .t4`
echo "$pontuacao"
# uma coisa que eu devia ter feito aqui é pegar o nome do cara (.t2 | grep $i | sed...)
if [ -n "$pontuacao" ]; then
if [ $pontuacao -ge 200 ]; then
echo "$i|$pontuacao" >> .ponto #isso aqui é só pra eu ver quem é certinho
fi
fi
done
Este foi bastante modificado depois e fiz várias versões melhores dele para pegar várias vezes o resultado. Mas esse serve para mostrar a idéia do negócio… ;)