Tal como é tradição nas MIUP, seguimos as normas do ICPC SWERC, portanto as equipas não poderão trazer quais quer manuais de referência, tais como livros, listagens ou notas. Não é igualmente permitido o uso de qualquer dispositivo electrónico ou suporte de informação digital (incluindo telemóveis, câmaras digitais, leitores de MP3, Pens USB). Poderá trazer caneta ou lápis, mas não papel (este é fornecido pela organização).
Cada equipa poderá preparar uma Cábula contendo não mais do que 25 páginas em formato A4, com fonte maior ou igual a 8 pontos. Cada membro de cada equipa pode utilizar uma cópia exacta da cábula. Antes do concurso (à chegada à zona de registo, no dia da prova), cada equipa terá que entregar a sua cábula. A organização tratará de verificar se está conforme as regras e posteriormente colocará na sala onde a equipa vai participar no concurso.
A documentação disponível durante o torneio está em http://miup2008.dei.uc.pt/docs/
- Tempo máximo de compilação: 60 segundos.
- Tamanho máximo dum programa: 100 Kbytes.
- Cada programa tem de ficar integralmente incluido num único ficheiro.
- No caso da linguagem Java, o ficheiro ".java" tem de ter o mesmo nome que a classe que contém o método "main". Não há limite para o número de classes e de interfaces contidas no ficheiro.
- gcc -Wall -Wno-unused -lm
- g++ -Wall -Wno-unused
- fpc -v0w
- javac
O sistema de avaliação corre em Linux e usa versões relativamente recentes dos compiladores:
- Gcc 4.1.2
- Free Pascal 2.2.0
- jdk 1.6.0_06
Todas as máquinas têm Linux (o sistema base é Fedora 8 x86) com os seguintes IDEs/editores:
- Fedora Eclipse 3.3.0
- Xemacs 21.5
- Gnu emacs 22.1.1
- Vim 7.1.135
- Gedit 2.20.3
- Kate 2.5.8
- Kdevelop 3.5.0-4
- DDD 3.3.11
- Netbeans 6.1
- Kwrite 4.5.8
- Tempo máximo de CPU: 1 segundo
- Memória disponível para variáveis globais e dinâmicas: 32 MB
- Memória disponível para pilha de execução e variáveis locais: 2 MB
- Normalmente, nas primeiras linhas dos dados de entrada surgem alguns números inteiros que anunciam o tamanho das diversas partes do texto que se segue. Isso evita a necessidade de testar a condição de "fim-de-ficheiro", durante a leitura dos dados.
- A última linha do ficheiro está sempre devidamente terminada por uma mudança de linha.
- Espaços em branco, quando usados, são sempre considerados como separadores. Os espaços em branco nunca ocorrem em grupos. Uma linha nunca começa com um espaço em branco. Uma linha nunca acaba com um espaço em branco.
- Supondo que os dados se iniciam por uma linha contendo um inteiro isolado:
C int n ; scanf("%d", &n) ; getchar() ; /* Salta a mudança de linha. */ C++ int n ; std::cin >> n ; getchar() ; /* Salta a mudança de linha. */ Java import java.util.* ; Scanner sc = new Scanner(System.in) ; /* Aviso: nunca crie mais do que um Scanner sobre o input. */ int n = sc.nextInt() ; sc.nextLine() ; /* Salta a mudança de linha. */ Pascal n : Integer ; readln(n) ;
C
int n, m ;
scanf("%d %d", &n, &m) ;
getchar() ; /* Salta a mudança de linha. */
C++
int n, m ;
std::cin >> n >> m ;
getchar() ; /* Salta a mudança de linha. */
Java
import java.util.* ;
Scanner sc = new Scanner(System.in) ; /* Aviso: nunca crie mais do que um Scanner sobre o input. */
int n = sc.nextInt() ;
int m = sc.nextInt() ;
sc.nextLine() ; /* Salta a mudança de linha. */
Pascal
n, m : Integer ;
readln(n, m) ;
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".
