O ToPAS - Torneio de Programação Para Alunos do Secundário - é um evento de programação competitiva dirigido a estudantes do ensino secundário.
É organizado conjuntamente pelas Universidade do Porto, Universidade Nova de Lisboa e Universidade do Algarve, com o intuito de estimular os estudantes a prosseguirem os seus estudos nestas instituições.
O evento realiza-se em simultâneo em cada uma das instituições, no mesmo dia, no mesmo período e com o mesmo conjunto de problemas.
O evento é coordenado por uma comissão científica, constituída por docentes das três instituições e responsável pela criação do conjunto de problemas e pela avaliação do trabalho das equipas.
Em cada instituição, há um júri local, designado pela instituição.
O evento realiza-se na sexta-feira da primeira semana completa do mês de maio.
Este regulamento aplica-se ao evento realizado em cada uma das instituições.
Haverá um regulamento local, adequando alguns dos pontos à realidade de cada instituição.
As tabelas classificativas são separadas por instituição e eventuais prémios atribuídos às equipas mais bem classificadas são da responsabilidade de cada instituição.
Uma equipa é constituída por 3 participantes. A admissão de equipas com menos participantes estará definida no regulamento local de cada instituição.
Um estudante é considerado elegível para participante se estiver inscrito numa escola do ensino secundário, ou equiparado, em Portugal, no ano letivo em que se realiza a prova.
Um estudante só pode concorrer por uma escola.
Cada equipa deverá ser acompanhada por um professor da mesma escola, designado por treinador, que servirá de representante da equipa antes e durante o concurso.
O treinador deve comprovar a elegibilidade dos participantes.
Uma escola pode levar duas equipas a cada instituição onde se realiza o ToPAS. A inscrição de mais equipas dependerá da disponibilidade da instituição.
Uma equipa será considerada com experiência em programação competitiva se algum dos seus elementos tiver anteriormente sido selecionado para participar num evento internacional de programação competitiva, como as International Olympiad in Informatics (IOI), por exemplo.
Equipas com experiência em programação competitiva podem participar no ToPAS mas concorrem num grupo distinto e não são candidatas a prémios, caso estes existam.
Os problemas propostos no ToPAS poderão ser resolvidos num conjunto de linguagens de programação, nomeadamente as linguagens oficiais e as linguagens aceites.
Quer as linguagens oficiais, quer as aceites, estarão configuradas no sistema de gestão de concursos e disponíveis nas estações de trabalho das equipas.
Os problemas propostos são garantidamente resolúveis nas linguagens oficiais, abaixo do tempo máximo de execução.
Os problemas deverão ser resolúveis nas linguagens aceites, mas esse facto não foi necessariamente comprovado.
As linguagens oficiais são: C, C++, Java e Python.
As linguagens aceites são definidas no regulamento local de cada instituição.
Em cada edição do ToPAS será definida pelo júri local uma versão de referência de cada uma das linguagens de programação.
Cada equipa terá direito a apenas um computador, equipado de maneira semelhante aos das outras equipas.
Cada equipa terá acesso aos compiladores/interpretadores quer das linguagens oficiais, quer das linguagens aceites.
Os programas deverão residir num único ficheiro e obedecer às normas da versão de referência da linguagem em que estiverem escritos.
Todos os computadores estarão equipados com o sistema Linux.
Serão instalados os ambientes de desenvolvimento (IDEs) e editores de texto mais populares do Linux.
As equipas estão impedidas de levar todo o tipo de material auxiliar, incluindo livros ou resumos, bem como dispositivos eletrónicos com capacidade de armazenamento, processamento ou acesso à Internet, como computadores, tablets, telemóveis, smartphones, smartwatches, pens ou calculadoras.
O trabalho das equipas será desenvolvido localmente em cada máquina.
O ambiente de submissão está integrado no browser.
O concurso tem a duração de 4 horas para tentar resolver 7 a 8 problemas.
Dentro do possível, os problemas irão evitar a dependência duma área de conhecimento em particular ou de uma determinada linguagem de programação.
Quando uma equipa tiver um programa que considera que resolve um problema, submete-o ao júri do concurso, que o avalia, dizendo se o programa é aceite (está correto) ou se está incorreto. As submissões incorretas serão marcadas como tendo ocorrido: "compile time error", "run-time error", "time-limit exceeded", "wrong answer", "presentation error" ou "contest rule violation".
A avaliação das submissões será feita por um sistema automático de avaliação cujo resultado será posteriormente confirmado pelo júri da instituição de acolhimento.
Há duas tabelas classificativas independentes: uma com as equipas com experiência em programação competitiva e a outra com as equipas sem experiência em programação competitiva.
As equipas (de uma mesma tabela) são classificadas com dois critérios:
O tempo gasto para resolver um problema é o tempo que decorreu desde o início do concurso até à submissão que foi aceite mais 20 minutos de penalização por cada submissão incorreta a esse problema.
Uma equipa é constituída por no mínimo 2 e no máximo 3 participantes. Excecionalmente, por motivos devidamente justificados, o júri local do ToPAS Lx poderá admitir que uma equipa tenha apenas um participante.
Para além das linguagens de programação oficiais (C, C++, Java e Python), no ToPAS Lx aceitam-se as linguagens de programação C# e Pascal.