A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Competições de Programação Weverton Luis da Costa Cordeiro Universidade Federal do Rio Grande do Sul

Apresentações semelhantes


Apresentação em tema: "Competições de Programação Weverton Luis da Costa Cordeiro Universidade Federal do Rio Grande do Sul"— Transcrição da apresentação:

1 Competições de Programação Weverton Luis da Costa Cordeiro Universidade Federal do Rio Grande do Sul weverton.cordeiro@gmail.com www.inf.ufrgs.br/~wlccordeiro

2 Agenda Competições de Programação International Collegiate Programming Contest (ICPC) Maratona de Programação Preparação para a Competição no INF/UFRGS

3 Competições de Programação

4 International Collegiate Programming Contest (ICPC)

5 San Jose (Calif.), EUA (1997)Xangai, China (2005) São Petersburgo, Rússia (2013) International Collegiate Programming Contest (ICPC) Brasileiros nas Finais Mundiais (algumas participações…) Marrakech, Marrocos (2015)

6 International Collegiate Programming Contest (ICPC) Regionais MundiaisNa América Latina

7 Maratona de Programação

8 Maratona de Programação Informações gerais Dividida em duas etapas Etapa regional Final nacional Edição 2016 Fase regional dia 10 de set., em várias sedes Final nacional nos dias 11 e 12 de nov. em Belo Horizonte Edição 2015 639 times de 209 escolas 62 times finalistas Sedes regionais em 2015

9 Maratona de Programação Participações na Final Brasileira 2015 (São Paulo)

10 Maratona de Programação Premiação Cópia do Troféu “Maratona de Programação” para o vencedor Medalhas aos 10 primeiros colocados Ouro para os três primeiros Prata para os três seguintes Bronze para os demais Acesso ao ACM ICPC para os melhores colocados (número de vagas varia)

11 Maratona de Programação INF/UFRGS – “Hall da Fama” Afonso Neto, Bruno Silva, e Carlos Scheidegger, coach Taisy Weber Bronze em 2002 (*) Daniel Osmari, Leonardo Santagada, e Rodrigo Faller, coach João Comba Prata em 2006 (6º Lugar) Cristiano Dalbem, Gabriel Portal e Bruno Fiss, coach João Comba Bronze em 2011 (9º Lugar)

12 Maratona de Programação Formato da competição Os times (formados por 3 alunos) possuem 5 horas e apenas um computador para resolver um conjunto de problemas A solução projetada para cada problema é submetida aos juízes de forma online. Se a solução estiver correta, Vence quem resolver mais problemas durante as 5 horas, com o menor tempo corrigido acumulado

13 Maratona de Programação Time “Turing Indecisos” (UFPE), vencedor da Final Brasileira 2015

14 Maratona de Programação Algumas regras Distribuição de vagas na Final Nacional (62 vagas em 2015) Regra 1: ~ 25% atribuídas aos melhores times no ranking geral Regra 2: ~ 65% rateadas entre as sedes, pelo tamanho da sede Regra 3: ~ 10% para times a critério do Comitê Diretor Para se qualificar à final, um time deve resolver no mínimo 2 problemas Sedes regionais em 2015

15 Maratona de Programação Algumas regras Os times devem ser composto por 3 alunos de graduação ou início da pós Em 2016, para participar na maratona o aluno deve ter, no máximo Iniciado a primeira graduação em 2012 ou depois OU nascido em 1993 ou depois (limites incrementados a cada ano) Participado de uma final mundial da competição (limite fixo a cada ano) Participado de quatro etapas regionais da competição (idem anterior)

16 Maratona de Programação Formato da prova Cada problema contém Informações de contexto e enunciado do problema Descrição da entrada (casos limites,...) Descrição da saída (formatação esperada,...) Exemplo de caso de teste de entrada e de saída

17 Maratona de Programação Formato da prova Problema 11461 – Números Quadrados (Acervo do UVa Online Judge) Dados um par de números A e B, informar quantos números quadrados existem entre eles (inclusive) A entrada será dada por vários pares A e B (0 < A ≤ B ≤ 100.000) O fim da entrada será dado por A = B = 0 Para cada par, dizer quantos números quadrados há entre eles Entre 1 e 4 há 2 números quadrados Entre 1 e 10 há 3 números quadrados

18 Maratona de Programação Correção das submissões Os juízes usam um conjunto de casos de teste secretos para avaliar as soluções submetidas pelos competidores, os quais contém Casos limites (para verificar a eficiência do algoritmo submetido) Casos especiais (para verificar a corretude) Cada submissão recebe apenas uma das seguintes respostas No – Time Limit Exceeded No – Runtime Error No – Compile Error Yes No – Wrong Answer No – Presentation Error

19 Maratona de Programação Placar da Final Nacional 2015 (São Paulo)

20 Maratona de Programação Final Brasileira em Londrina, Paraná (2012)

21 Maratona de Programação Por que participar? A competição estimula habilidades matemáticas, de raciocínio lógico, de programação, tornando-os aptos a lidar com problemas complexos As técnicas de programação típicas da competição são ferramentas do dia a dia de engenheiros de software da Microsoft, Google, Facebook,... Essas empresas valorizam participação na maratona, e com frequência usam problemas típicos da competição nas entrevistas de emprego Satisfação e desenvolvimento pessoal por resolver novos desafios, aliado ao espírito saudável de competição, representando sua instituição Viagens (para as finais), premiações e brindes, entre outros motivos...

22 Maratona de Programação Como se preparar? Há inúmeras dicas! Mas pra começar... Montar um time e buscar entrosamento (convide mais dois amigos!!) Ficar fluente em uma linguagem de programação Dominar técnicas algorítmicas e análise de complexidade Dominar estruturas de dados Treinar usando problemas passados e juízes online Bastante motivação e perseverança!!!

23 Maratona de Programação Como se preparar? Algumas referências sobre o assunto Competitive Programming 3 (Halim & Halim, 2013) Programming Challenges (Steve & Skiena, 2003) Algoritmos: Teoria e Prática (Cormem et al., 2012)

24 Maratona de Programação No INF/UFRGS Desafios de Programação e Treinamento Maratona Introdução à Competições de Programação (em breve)

25 Maratona de Programação Alguns depoimentos de ex-competidores Tudo comecou em 2009 quando a gente participou pela 1 vez (...) Ficamos em ultimo lugar! Olhei aqueles caras com varios baloes, medalhas e premiacoes e pensei: "pqp eu queria um dia estar ali.." Bruno Junqueira Adami, USP São Carlos (campeão brasileiro em 2013 e finalista mundial do ACM ICPC 2014) Você deve olhar para todos os bons participantes à sua volta (…) Observe como eles pensam sobre os problemas, como eles escrevem códigos, como eles se preparam. Vocês tem que praticar muito, isso é o que vai melhorar as habilidades de vocês (…) (Tradução) Niyaz Nigmatullin, ITMO São Petersburgo, Rússia (primeira participação na etapa regional em 2009, e campeão mundial do ACM ICPC em 2013)

26 Maratona de Programação Mais informações e dicas para treinamento? Página da MaratonaGrupo da Maratona

27 Considerações Finais Competições de programação são muito empolgantes Vários benefícios e possibilidades Várias oportunidades para participar Mais informações em http://maratona.ime.usp.br/ http://icpc.baylor.edu/

28 Considerações Finais Junte-se a esse esforço!

29 Competições de Programação Weverton Luis da Costa Cordeiro Universidade Federal do Rio Grande do Sul weverton.cordeiro@gmail.com www.inf.ufrgs.br/~wlccordeiro

30 Maratona de Programação Slides Adicionais

31 Maratona de Programação Sede Manaus – AM (2004)

32 Maratona de Programação Sede de Manaus – AM (2004) Participação tragicômica na etapa regional em Manaus – AM (2004)

33 Maratona de Programação Sobre a Competição

34 International Collegiate Programming Contest (ICPC) Competição de programação internacional de mais alto prestígio Fomenta criatividade, trabalho em equipe e inovação Testa a habilidade dos alunos de produzir sob pressão Duas etapas Finais Regionais – realizadas em vários países ao redor do mundo Final Mundial – reúne os melhores colocados das competições regionais

35 International Collegiate Programming Contest (ICPC) As competições regionais de 2015 reuniram 40.226 competidores, vindos de 2.736 universidades e representando 102 países Evolução da Competição Número de Estudantes (ACM ICPC Fact Sheet 2015)

36 Maratona de Programação Etapa brasileira que dá acesso ao ACM ICPC, sendo realizada nos mesmos moldes Estabelecida em 1996, é promovida anualmente pela Sociedade Brasileira de Computação

37 Maratona de Programação Crescimento da competição no Brasil Fonte: Slides apresentados na Final Brasileira de 2015 (Carlos E. Ferreira)

38 Maratona de Programação Histórico de premiação (medalhas desde 2002) CAMPEÃOOUROPRATABRONZE 1UFPE81124 2ITA3855 3UNICAMP34511 4USP-São Paulo2788 5PUC-Rio2232 6USP-São Carlos1100 FURG1000 8UFCG0301 9UFRJ0255 10UFRN0122 11IME-RJ0112 UFPR0112 13UFS0101 14UFMG0023 15UnB0022 16UFRGS0012 17UECE0011 UFSC0011 19UEPG Ponta Grossa0010 UFES0010 UFBA0010 22UNESP0001 UFTPR0001 UFG0001 UFU0001

39 Maratona de Programação Formato da Competição

40 Maratona de Programação Formato da competição Tempo “corrigido” é a métrica usada como critério de desempate Somatório dos tempos corrigidos para cada problema resolvido O tempo corrigido de um problema Tempo decorrido do início da competição até a submissão correta Penalidade de 20 minutos para cada submissão incorreta feita antes Por exemplo Um time resolveu o Problema A após 30 min. (com 2 tentativas erradas) e o B após 60 min. (com 4 tentativas erradas) Tempo corrigido total = (30 + 2 * 20) + (60 + 4 * 20) = 210

41 Maratona de Programação Formato da Prova

42 Maratona de Programação Formato da prova Cada problema contém Informações de contexto e enunciado do problema Descrição da entrada (casos limites,...) Descrição da saída (formatação esperada,...) Exemplo de caso de teste de entrada e de saída

43 Maratona de Programação Formato da prova Informações para contextualização (background) Informações gerais para dar sentido ao problema, encaixando-o no que poderia ser uma situação real no qual o mesmo se aplica Enunciado do problema Instruções sobre que tipo de entrada será fornecida à solução que o time propor e que tipo de resposta é esperada para a entrada dada. Ex: Dados dois número N e M, retorne a soma de todos os número inteiros entre N e M, inclusive. Geralmente o enunciado do problema e background não são divididos no problema, o que não implica em dificuldade adicional

44 Maratona de Programação Formato da prova Informações sobre a entrada (Input) Formatação da entrada Variáveis que devem ser lidas pela solução submetida Quais as limitações das informações de entrada Como terminar a leitura do caso de teste Cada caso de teste é composto por dois números, N e M, sendo, respectivamente…. N é o número inicial, M é o número final 1 < N < 1000000, 2 < M < 2000000 O fim de um caso de teste é indicado por N = M = 0

45 Maratona de Programação Formato da prova Informações sobre a saída (Output) Contém informações sobre como a saída deverá ser formatada Para cada caso de teste, implimir uma linha “Caso #i: ”, onde i é o caso de teste corrente, seguida de uma linha com um número, indicando o somatório dos números da entrada. Cada número deve ser impresso em uma única linha.

46 Maratona de Programação Formato da prova Exemplo de entrada (Sample Input) Exemplo sobre o que é uma entrada válida para o problema Exemplo de saída (Sample Output) Contém a saída esperada para a entrada informada 1 8 4 100 0 Caso #1: 36 Caso #2: 5044

47 Maratona de Programação Correção das Submissões

48 Maratona de Programação Correção das submissões Os juízes possuem casos de teste privados, que são utilizados para testar as soluções submetidas pelos competidores Instâncias bem diferentes dos exemplos do caderno de questões Exploram casos limites (para verificar eficiência do algoritmo submetido) e especiais (para verificar corretude) Cada submissão recebe apenas uma das seguintes respostas (os tipos de resposta podem variar de competição pra competição) No – Time Limit Exceeded No – Runtime Error No – Compile Error Yes No – Wrong Answer No – Presentation Error

49 Maratona de Programação Correção das submissões Yes O código submetido respondeu corretamente a todos os casos de teste dos juízes, dentro do tempo limite esperado O time ganha um balão!! No – Wrong Answer O código submetido não retornou a resposta correta para um ou mais casos de testes dos juízes

50 Maratona de Programação Correção das submissões No – Presentation Error A saída gerada, embora correta, não obedeceu algumas regras de formatação estabelecidas na descrição do problema (Output) Espaços a mais (ou a menos), bem como quebras de linhas indevidas ou faltando são os principais responsáveis por essa rejeição No – Time Limit Exceeded O código submetido demorou mais tempo do que o esperado Correção interrompida imediatamente quando há estouro de tempo Tempo limite definido em função da complexidade máxima esperada para uma solução projetada para aquele problema

51 Maratona de Programação Correção das submissões No – Runtime Error Programa abortou a execução durante o processamento das entradas Pode ocorrer devido a uma exceção não tratada (null pointer, divisão por zero, chamadas inválidas, etc.) No – Compile Error O código fonte da solução não compilou na máquina dos juízes Vários motivos possíveis Código submetido como sendo em C, quando na verdade era C++ Uso de recursos fora das especificadores exigidas pelos juízes Falta de atenção (ex: mandar código antes de testar), etc.

52 Maratona de Programação (Algumas) Dicas de Preparação

53 Maratona de Programação (Algumas) Dicas para preparação Competição de criação e implementação de algoritmos Interfaces com o usuário não são preocupação, por exemplo Melhor escrever nomes de variáveis e funções sugestivos do que escrever comentários no código O caderno possui problemas fáceis, moderados e difíceis. Se um problema parecer difícil, considere abordar outro problema Mas nem sempre os problemas são o que parecem ser! Dados dois polígonos, encontrar a área de intersecção. Simples?

54 Maratona de Programação (Algumas) Dicas para preparação Certifique-se de que o problema realmente foi entendido, antes de partir para a implementação Certifique-se de que o programa está correto, antes de submetê-lo Uma penalidade custa mais caro que 10 minutos de verificação Após tentar as entradas e saídas de exemplo, crie instâncias de entrada que exploram os valores limites especificados no problema

55 Maratona de Programação (Algumas) Dicas para preparação Evitar o processamento desnecessário de dados Ex., expansão de todos os ramos de uma árvore Erro típico quando se aprender a programar: testar (i == j) para se varrer os elementos da diagonal principal de uma matriz Há apenas um computador disponível. Maximize o uso do mesmo, usando- o especialmente para digitação de soluções Procure definir papeis para cada um dos integrantes do time Competidores que brigam pelo computador não vão a lugar nenhum Times em que os competidores ficam ociosos também não vão muito longe... a menos que vocês já tenham resolvido todos os problemas

56 Maratona de Programação (Algumas) Dicas para preparação Considere dar a outro colega do seu time um problema para o qual projetastes uma solução, em caso de erros e submissão seguidos Verifique periodicamente o placar da competição. Ele pode conter informações valiosas sobre problemas fáceis e difíceis O “algoritmo da formiga” pode ser interessante, para sites com vários de competidores (por exemplo, uma final) Evite porém seguir os times que resolvem problemas na ordem em que aparecem no caderno, sem levar em conta a complexidade

57 Maratona de Programação (Algumas) Dicas para preparação Em caso de No – Wrong Answer sucessivos Usar um loop infinito (para obter um TLE) ou uma divisão por zero (para pegar um RE) nos trechos em que seu programa pode estar errado Seu time obterá um bit de informação Porém em troca de uma penalidade (no desespero, vale tudo!) Não adianta iniciar um problema nos minutos finais da competição É melhor modelar alguns problemas no início Ou usar os minutos finais para depurar soluções ainda não aceitas

58 Maratona de Programação (Algumas) Dicas para preparação Procure adotar uma estratégia para seu time Simples: cada integrante do time pega um problema para resolver Terminal Man: uma única pessoa fica encarregada do terminal, enquanto os outros dois elaboram os algoritmos e casos de testes Think Tank: todos os problemas são modelados pelo time, para finalmente serem definidos quais serão implementados Toda estratégia possui pontos positivos e negativos, e nem sempre será adequada para qualquer time Use aquela que melhor explora as capacidades de cada competidor Procure aprimorar a estratégia do time com muito treinamento

59 Maratona de Programação Ambiente Computacional

60 Maratona de Programação Ambiente computacional BOCA – BOCA Online Contest Administrador Desenvolvido por Cássio Polpo de Campos Disponível em http://bombonera.org/ Sistema operacional Latam BOCA Linux Ferramentas para promover uma competição (e simulados) Também disponível em http://bombonera.org/


Carregar ppt "Competições de Programação Weverton Luis da Costa Cordeiro Universidade Federal do Rio Grande do Sul"

Apresentações semelhantes


Anúncios Google