TIUP'2007 / 5ª Etapa

Aspectos práticos da resolução dos problemas do concurso

Este documento contém informação prática relevante para a resolução dos problemas apresentados na TIUP'2007 / 5ª Etapa.

Restrições durante a compilação dos programas

Estas são estas as restrições impostas pelo sistema de avaliação, durante a compilação de programas:

Opções de compilação

É indispensável conhecer as opções de compilação que o sistema de avaliação automático usa. Por exemplo, sabia que a compilação é efectuada com todos os warnings ligados, em C, C++?

Para evitar dissabores, ao testar cada solução, é importante usar as mesmas opções de compilação do avaliador automático!

Eis as opções de compilação que o sistema de avaliação usa, para as diversas linguagens:

Nota1: Em C++, os comentários podem ter a forma "/*...*/" ou a forma "//...". Mas em C, só a primeira forma é legítima. As opções "-ansi -pedantic" obrigam o gcc a respeitar com rigor a norma oficial, tanto neste aspecto como noutros.
Nota2: A opção "-Wno-unused" serve para eliminar os warning relativos a entidades definidas mas não usadas.

Versões dos compiladores

O sistema de avaliação corre em Linux e usa versões relativamente recentes dos compiladores. Nota: Também está disponível o compilador gcc/g++ 3.4.6. Para pedir ao Mooshak para usar este compilador, escreva o comentário "/* GCC3 */" (em maiúsculas) na primeira linha do ficheiro fonte, em todas as submissões de C/C++.

Restrições durante a a execução dos programas

São estas as restrições impostas pelo ambiente de execução dos programas: Os recursos disponíveis são largamente suficientes para resolver qualquer problema do concurso, independentemente da linguagem usada.

Opções de execução

No caso das linguagens C, C++ e Pascal, o Mooshak garante directamente as restrições indicadas na secção anterior.

No caso do Java, o Mooshak usa as seguintes opções de execução:

onde "-Xss1m" garante um stack de execução com 1MB (o valor por defeito é de apenas 400KB), e "-Xmx71m" garante um máximo de 64MB eficazes para a criação de objectos.

Servidor do concurso

Servidor que compila e executa as submissões dos concorrentes: Também existe um segundo servidor, dedicado ao júri.

Dados de entrada

Os dados de entrada, usados para testar as soluções dos concorrentes, são lidos da entrada padrão. Consistem em texto cuidadosamente formatado para ser simples de processar: Note que as linhas com números inteiros que ocorrem no início dos dados de entrada devem ser consumidas bem até ao fim para evitar desalinhamentos na leitura dos dados subsequentes. Eis como isso se faz nas várias linguagens:


Dados de saída

Os dados de saída, produzidos pelos programas dos concorrentes, são escritos na saída padrão. É necessário respeitar rigorosamente o formato exigido no enunciado. Qualquer desacerto, mesmo ligeiro, é suficiente para que um programa seja classificado como "Presentation error".

Note que não é possível detectar visualmente certas anomalias nos dados de saída. Por exemplo: um espaço em branco no final duma linha, uma linha em branco no final dos dados, a omissão da mudança de linha na última linha dos dados. Todas estas situações são inaceitáveis e provocam um "Presentation error".