Seletiva de SI para a Maratona de Programação - 2013

Olá alunos de SI, tudo bem?
Já estão disponíveis as normas para a Seletiva 2013 [pdf].
Aproveito para passar algumas dicas aos times que participarão da seletiva:
1o) Lembrem-se que vocês precisaram tratar entradas de diferentes tipos. Em Java, a classe mais usada para receber entradas é a Scanner. Coloquei o link dois programas exemplo que somam os inteiros da entrada e imprimem a soma. A diferença é como a entrada é passada. Em soma1 a entrada se encerra por um zero (isto estaria escrito no enunciado), então os dados devem ser somados até que apareça esse zero. Em soma2, o enunciado diria que o arquivo de entrada deve ser lido até o final (até o "fim de arquivo") então, o programa roda enquanto houver um próximo número na entrada e só é possível testar esse tipo de programa usando arquivo de entrada (soma1.java, soma2.java):
     javac soma2.java
     java soma2 < entrada.txt
     Imaginando-se que há um arquivo chamado entrada.txt com os dados de entrada. Este tipo de teste usando o console (ou prompt) é sempre recomendado para verificar se as saídas produzidas são idênticas às solicitadas pelos enunciados. Além de ler inteiros, vocês potencialmente terão que ler Strings, decimais, caracteres, etc.
2o) Em competições como a maratona de programação vocês podem usar diversas classes / pacotes básicos das linguagens de programação, algumas classes úteis de Java são: ArrayList, Arrays, LinkedList e Hashtable. É recomendado conhecer algumas dessas classes.
3o) No dia da competição (seletiva ou maratona) vocês podem levar qualquer quantidade de material impresso, porém não poderão usar internet, nem qualquer eletrônico auxiliar (além de um computador do laboratório por time). Então levem livros e ou impressões com os conteúdos que vocês acham que precisarão consultar.

O sistema utilizado na seletiva (e na maratona) é o BOCA. Após realizar uma submissão, um dos seguintes veriditos estará associado a ela:
Not answered yet - submissão ainda não avaliada
Accepted - solução aceita (solução correta)
Compilation error - erro de compilação (verificar se o nome do arquivo/classe está correto e se não está dentro de nenhum pacote
Runtime error - erro de execução: os principais motivos são: acesso a possição inválida de um arranjo; tentativa de acesso a um elemento nulo; tratamento incorreto da entrada
Time limit exceeded - execução do programa ultrapassou tempo máximo (tipicamente de 3 segundos); após este tempo o programa é encerrado então não é possível verificar se a solução estaria correta
Wrong Answer - resposta errada: programa terminou de executar dentro do tempo mas o resultado está errado
Presentation error - há erros na apresentação da saída (tipicamente enters ou espaços em branco sobrando ou faltando)
Contact staff - contatar o organizado (provavelmente porque o problema é diferente dos supracitados)

Importante: para a seletiva (assim como tipicamente na maratona) todos os problemas terão tempo máximo de execução de 3 segundos; eles não devem estar dentro de nenhum pacote; o nome do arquivo/classe deve ser exatamente o nome que aparece no enunciado; as saídas devem seguir a risca a especificação; os testes realizados são (tipicamente) diferentes/mais complexos do que aqueles que aparecem no enunciado.

Exemplos de competições passadas.