Provisoriamente 2^4

Saiu o resultado da modalidade programação nível 2 da OBI2007. Eu fiz 210 pontos, atingindo a décima-sexta colocação. A pontuação foi melhor que eu pensava, porque soluções de força bruta levaram uma grande quantidade de pontos. Porém, o que está previsto no regulamento é que 10 pessoas (no mínimo) viajarão para Campinas.

Agora vejam minha lógica: todos na Olimpíada Brasileira de Informática são programadores. Nosso sistema de numeração é o binário. Um número igual ou maior que 10 em decimal deve ser? Exatamente: 16 (10000 em binário).

Dezesseis primeiros colocados

  1. Eduardo Augusto Ribas
  2. André Linhares Rodrigues
  3. David Nissimoff
  4. Daniel dos Santos Marques
  5. ALEXANDRE NOBUO KUNIEDA
  6. REGIS PRADO BARBOSA
  7. Ricardo Hahn Pereira
  8. Rodrigo Alves Lima
  9. Cesár Ryudi Kawakami
  10. Gabriel Luís Mello Dalalio
  11. José Marcos Andrade Ferraro
  12. Fábio Mallaco Moreira
  13. Hailton Ferraz da Silva Junior
  14. Daniel Santos Ferreira Alves
  15. Paulo André Carvalho de Melo
  16. Tiago Madeira

A classificação oficial e a lista de convocados para a seletiva da IOI deve ser divulgada na semana que vem.

Ganhei 100 dólares!

Congratulations Tiago, you are one of the winners of the ProBlogger Group Writing Project.

You’ve won $100 cash

The sponsor of this prize will be notified of your email address for you to arrange for it to be sent to you.

Thanks for participating in the project and congratulations. A post announcing your win will go live on ProBlogger shortly.

Darren Rowse

Problogger.net

Entre 300 concorrentes, este que vos blogga ganhou 100 dólares escrevendo aquele post sobre a blogosfera brasileira de 2006, no concurso ProBlogger Group Writing Project!

Eu achei que fosse impossível ganhar esse negócio, fiz mais pra ganhar um link na página do ProBlogger e porque realmente queria falar bem da blogosfera brasileira. Mas… ganhei! :-) Valeu por todos que estavam torcendo (tinha alguém torcendo?), agora quero ver como eu vou fazer pra pegar esse dinheiro!

Resultado do DNA 2006

Saiu ontem o resultado do Desafio Nacional Acadêmico. Minha equipe, 2 Pi ficou em 24º lugar no Brasil e em 2º lugar em Santa Catarina depois de acabarmos o desafio no dia 15 às 20h00.

Poderíamos ter ido melhor se a organização não tivesse mudado a data do desafio final (eu estava em Campinas, fazendo a seletiva para IOI e não pude participar do jeito que deveria) e um participante da nossa equipe priorizasse o desafio ao invés do download do Missão Impossível III. De qualquer maneira, valeu!

There and back again…

Eu até tentei escrever um artigo por dia na semana passada, durante o curso da seletiva brasileira para a Olimpíada Internacional de Informática, mas não deu tempo… Então aqui vai um resumo feito uma semana depois do final do curso, separado em tópicos, com o título pouco criativo “There and back again…”

Nível mais alto

Comparando a prova da segunda fase da OBI2006 com a prova da OBI do ano passado, já era possível perceber que o nível esse ano subiu. E, como já esperado, o nível do curso e das pessoas também subiu, o que é excelente para o Brasil.

Mais prática, menos teoria

Neste ano não aconteceu a programação “normal” que tivemos nos últimos dois anos: aula teórica (só um professor apresentando slides e nós anotando, sem computadores) durante a manhã e aula prática durante a tarde.

Nos dois períodos nossas aulas foram no laboratório, com computadores, onde resolvemos uma porção de problemas do treinamento para a ACM da Universidade de Valladollid.

Criei uma pasta no meu servidor com todos os problemas que eu consegui resolver (alguns deles ficaram pela metade): tiagomadeira.net/pub/uva/ (essa pasta infelizmente foi perdida com o tempo).

Problemas sobre mais de um conteúdo

Uma característica interessante dos problemas desse ano (do treinamento e da prova) foi o uso de mais de um tipo de algoritmo para fazer a solução. A combinação mais comum foi geometria + grafos, que caiu inclusive na prova da Seletiva, no problema Labirinto.

A Prova

Primeiro Dia – Quadrado Romano

[Enunciado] 30 minutos tentando pensar em algum tipo de recorrência, 1h implementando uma solução força bruta! No final, pensei que faria uns 50 pontos (perderia um pouco por causa do tempo), mas perdi alguns pontos por resposta errada, ainda não sei por quê!

Solução: romano.c (infelizmente foi perdido com o tempo)

Pontos: 10/100

Segundo Dia – Euros

[Enunciado] Durante as duas horas da prova fiquei procurando uma recorrência. Descobri que estou muito newbie em programação dinâmica. Não programei uma linha de código…

Pontos: 0/100

Terceiro Dia – Labirinto

[Enunciado] Olhei o enunciado e já saquei o que o problema queria. Eu tenho uma boa noção de grafos (embora precise estudar fluxos) e o curso trabalhou bastante algoritmos geométricos, então sem maiores problemas fiz o algoritmo, testei várias vezes, achei que ia tirar 100. No fim, não sei o que houve, se foi falta de tempo ou resposta errada. Só vi que fiz 40 pontos…

Solução: labirinto.c (infelizmente foi perdido com o tempo)

Pontos: 40/100

Quarto Dia – Prova Final

[Caderno de Tarefas] Li todos os problemas e achei que poderia ir bem na prova (o primeiro problema eu tinha certeza que não conseguiria, mas o segundo e o terceiro dava pra fazer). Então, fui direto para o segundo problema, acreditando que era o mais fácil. Mas depois de bolar vários algoritmos, ter respostas erradas e tempos muito altos, tive que ficar com uma solução precária, um Floyd Warshall para cada troca de vértices (resultado: [tex]O(n^{5})[/tex]!) Aí depois não deu tempo de fazer o terceiro problema, mesmo eu tendo esboçado sua solução.

Solução do Teletransporte: tele.c (infelizmente foi perdido com o tempo)

Pontos: 40/300

Conclusão

O legal é que esse curso sempre dá vontade de estudar, além de ensinar bastante… Aqui ficam registrados meus objetivos e metas pro segundo semestre de 2006 e primeiro semestre de 2007.

Objetivos

Metas

  • Comprar e ler Programming Challenges.
  • Estudar programação dinâmica. Conhecer os algoritmos mais comuns.
  • Estudar fluxos em rede e ordenação topológica.
  • Estudar matemática, inclusive recorrências e geometria (que não ajudam só para olimpíada de matemática, mas pras olimpíadas de informática também)

Fase de Correção

OBI2006 em fase de correção…

As tarefas da modalidade Programação estão sendo corrigidas. Os gabaritos das provas da modalidade iniciação estão disponíveis, por enquanto apenas para professores (algumas escolas atrasaram a realização da prova, por isso a demora na divulgação do gabarito). Solicitamos os professores que consultem a área de acesso restrito para informações de como proceder para enviar os resultados de sua escola. (retirado do site da OBI)

O pessoal da Iniciação já sabe como foram por aqui… Meu colégio até que teve um resultado legal: dois alunos da iniciação 1 (meu irmão é um deles) fizeram 12 de 16 e três alunos da iniciação 2 fizeram 19 de 22. Provavelmente esses vão pra segunda fase.

E por falar em ir pra segunda fase…

Pensando um pouco, cheguei a conclusão de que todo competidor que acertou mais de uma questão (ou talvez até menos que isso) já deve estar na segunda fase.

Uns 20 competidores devem ir para Campinas (medalha de ouro). Outros 20 devem conseguir medalhas de prata, mais 30 medalhas de bronze e 30 menções honrosas. Então, no mínimo 100 precisam fazer a segunda fase.

Neste ano, 520 pessoas participaram da modalidade Programação 2. Grande parte desses falta na prova ou zera (digamos que seja metade). Dessa forma, sobram 260.

Já que essa prova de primeira fase foi só para acabar com os casos de cola (tanto que a pontuação dela nem soma com a da segunda fase para dar a nota final e decidir se o competidor vai ao curso de programação em Campinas), acho bem razoável que esses 260 participem da segunda fase para no fim ficarem os 100 melhores.

Mas é só um palpite…

Meus códigos-fonte

Já que não é mais possível submeter resultados (as tarefas já estão sendo corrigidas), agora publiquei meus códigos-fonte na seção de scripts do meu site.

Colheita de Caju

Como vocês podem ver nos links aí em cima, a minha pior solução foi para o problema Colheita de Caju. A complexidade ficou um pouco (na verdade bastante) alta: O(L.C.(L-M).(C-N)). É a solução força bruta do negócio, bem simples de implementar e que com certeza funciona, mas para um caso com [L=1000, C=1000, M=1, N=1], ela demora um tempo no mínimo razoável… Mas tudo bem, os outros acho que passam talvez até com a pontuação máxima.

A solução ótima seria usando programação dinâmica; um algoritmo que depois eu comento melhor.

Nota esperada

Quase duas semanas depois da prova, meu chute para a nota da primeira fase é 420/500. Mas nunca se sabe… :)

© 2005–2020 Tiago Madeira