segunda-feira, maio 09, 2011

Google Code Jam 2011: Qualification Round

Na sexta/sábado passado tivemos a rodada de qualificação do Code Jam 2011. Para quem não conhece esta competição e o seu formato, sugiro ver os meus posts anteriores.

Esta rodada foi um pouco diferente para mim. Eu não estava muito motivado, pensei até em não participar; acabei entrando no site somente no final da manhã de sábado. Ao contrário dos anos anteriores, foram quatro problemas. Uma primeira olhada rápida indicaram que os dois primeiros eram relativamente simples, o terceiro complicado e o quarto muito complicado.

Só lembrando, para cada problema existem dois conjuntos de testes, um pequeno e um grande. Você pode tentar resolver o conjunto pequeno várias vezes (a cada tentativa um novo conjunto é gerado), a resposta é imediata. Já o conjunto grande você tem só uma tentativa e só fica sabendo se acertou ou errou no final da rodada.

Na rodada de qualificação o tempo não é um limitante, assim resolvi com calma o primeiro problema. No segundo eu me meti a ser esperto e enfiei o pés pelas mãos, só conseguindo resolvê-lo após três tentativas errada.

Fiquei então pensando no terceiro problema, cheguei a gastar um bom tempo implementando uma solução que acebei percebendo incorreta. Já estava perto de desistir quando veio um "momento Eureka" e eu vislumbrei uma solução muito simples. Tão simples que soltei um palavrão e considerei o problema uma "pegadinha".

Reseolvidos os conjuntos pequenos dos três primeiros problemas, a passagem para a rodada seguinte estava garantida, com uma razoável possibilidade de eu ter acertado também os conjuntos grandes.

Mas o quarto problema me intrigava. Experimente rodar uma solução estúpida com um conjunto pequeno e deu errado. Continuei rabiscando papel e de repente veio uma ideia meio maluca, uma sensação de ter achado a solução mas ser incapaz de prová-la. Como não tinha nada a perder, tentei um novo conjunto pequeno - e acertei. Não posso dizer que este problema seja uma "pegadinha", mas a solução é realmente inesperada.

Ao final da rodada vei a confirmação que eu tinha acertado todos os problemas, algo que eu no começo estava certo que não ia nem tentar.

Nos próximos posts vou comentar sobre os quatro problemas. Quem quiser pode vê-los no site oficial. A análise oficial e as soluções dos competidores também estão lá.

Nenhum comentário: