grupo de estudos para a maratona de programação

140
Grupo de Estudos para a Maratona de Programação Universidade Federal do Pernambuco 2007

Upload: maddy

Post on 21-Mar-2016

44 views

Category:

Documents


8 download

DESCRIPTION

Grupo de Estudos para a Maratona de Programação. Universidade Federal do Pernambuco 2007. Agenda. International Collegiate Programming Contest Maratona de Programação Informações gerais Comitê organizador Histórico Participação da UFPE no evento Formato Por que participar Regras - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Grupo de Estudos para a Maratona de Programação

Grupo de Estudos para a Maratona de Programação

Universidade Federal do Pernambuco

2007

Page 2: Grupo de Estudos para a Maratona de Programação

Agenda International Collegiate Programming Contest Maratona de Programação

Informações gerais Comitê organizador Histórico Participação da UFPE no evento Formato Por que participar Regras Como se preparar Dicas

Objetivos do Grupo de Estudo Primeira Atividade

Page 3: Grupo de Estudos para a Maratona de Programação

International Collegiate Programming Contest

Page 4: Grupo de Estudos para a Maratona de Programação

International Collegiate Programming Contest Conhecido mundialmente como ICPC Surgiu em 1976 Promovido anualmente pela

Association for Computer Machinery (ACM)

Web site: http://icpc.baylor.edu/icpc/ Diretor: Dr. William B. Poucher,

Professor of Computer Science (Baylor University)

Page 5: Grupo de Estudos para a Maratona de Programação

International Collegiate Programming Contest A final mundial de 2006 ocorreu

em Tóquio, Japão. Neste ano, mais de 5000 times disputaram regionais em todo o mundo.

O time da Warsaw University (Polônia) foi a grande campeã da final mundial de 2006, a qual ocorreu em Tóquio.

Page 6: Grupo de Estudos para a Maratona de Programação

International Collegiate Programming Contest A competição possui duas etapas: a etapa

regional mundial, realizada em vários países em todos (?) os continentes, e a final mundial

A etapa regional ocorre no ano anterior à final mundial

Por exemplo, a final mundial de 2007 irá suceder as competições regionais que ocorreram em 2006

Apenas um time por instituição pode participar da final mundial

Page 7: Grupo de Estudos para a Maratona de Programação

International Collegiate Programming Contest As competições regionais de 2006

reuniram um total de 6.099 times, de 1756 instituições de ensino

Participação de 82 países nas etapas regionais ao redor do mundo em 2006

Page 8: Grupo de Estudos para a Maratona de Programação

International Collegiate Programming Contest

2 3 5

22 2227

3 210

2520

28

05

1015202530

Participação/ continente: 2005Participação/ continente: 2006

Page 9: Grupo de Estudos para a Maratona de Programação

International Collegiate Programming Contest – Regionais Latino Americanas ACM-ICPC South America Contest

within Brazil ACM-ICPC South America Contest

outside Brazil ACM Mexico and Central America

Programming Contest

Page 10: Grupo de Estudos para a Maratona de Programação

ACM-ICPC South America Contest within Brazil Conhecido no Brasil como Maratona

de Programação Promovido pela Sociedade Brasileira

de Computação (SBC) Web site: http://maratona.ime.usp.br Diretor: Dr. Carlos Eduardo Ferreira,

Professor of Computer Science (IME-USP)

Page 11: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Informações Gerais

Page 12: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Informações Gerais É um evento que nasceu das competições

regionais classificatórias para as finais mundiais do concurso de programação da ACM

É parte da regional sul-americana do ACM ICPC Primeira edição ocorreu em 1996 O formato adotado para a competição é o

mesmo formato do ACM ICPC Destina a alunos de cursos de graduação e

início de pós-graduação na área de Computação

Page 13: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Informações Gerais É dividido em duas etapas: a etapa regional,

realizada em várias sedes espalhadas pelo país, e a etapa nacional, que reune os times classificados em cada uma das sedes (two-tiered contest)

Um total de 30 times se classificam para a final nacional

No máximo dois times por instituição se classificam para a final nacional

Número de vagas para a final mundial depende do número de total de inscritos

Page 14: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Informações Gerais Fórmula para a distribuição de 20 vagas

para a final entre as sedes cadastradas

Outras 10 vagas são distribuídas entre sedes que contarem com a participação de uma instituição medalhista na competição do ano anterior

timestotalnúmerosedetimesnúmeroarredondasedenavagas

____*20__

Page 15: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Premiação

Page 16: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Premiação A Maratona de Programação da SBC

oferece medalhas aos dez primeiros colocados na fase final da competição Ouro para os três primeiros Prata para o quarto, quinto e sexto Bronze para o sétimo a décimo lugares

O time campeão recebe uma cópia do troféu "Maratona de Programação".

Page 17: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Premiação O time campeão da Maratona de

Programação garante participação nas finais mundiais do ACM-ICPC.

Caso o Brasil receba outras vagas do comitê diretor da regional sul-americana da competição, estas serão ocupadas pelos primeiros colocados da final brasileira.

Page 18: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Comitê Organizador

Page 19: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Comitê Organizador A Maratona de Programação só acontece

graças ao trabalho voluntário de muitos entusiastas da idéia

Desde o ano 2000, o responsável pelo concurso no Brasil é Carlos E. Ferreira do Depto de Ciência da Computação do IME-USP.

Nos primeiros anos de realização a Maratona foi organizada por Claudionor Coelho do Depto de Ciência da Computação da UFMG e por Ricardo Dahab, do IC da Unicamp

Page 20: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Comitê Organizador O Comitê Diretor da Maratona de Programação

é formado por: David Deharbe, UFRN. Edson Norberto Caceres, UFMS. Marcus Vinicius Poggi de Aragão, PUC-RJ. Raul Fernando Weber, UFRGS. Rodolfo Jardim de Azevedo, Unicamp.

O diretor da regional sul-americana do ICPC é Ricardo Dahab, do IC da Unicamp. http://www.ic.unicamp.br/~acmcntst/

Page 21: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Histórico

Page 22: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico 1996 - I Consun (Concurso Nacional de

Software Universitário), Belo Horizonte Organizado pelos Prof. Claudionor Coelho

(DCC-UFMG) e Ricardo Dahab (IC-Unicamp) Os três melhores classificados no Consun

competiram na Maratona de Programação O único time brasileiro (e sul-americano)

classificado para as finais mundiais do ICPC foi o time do IC-Unicamp, formado pelos alunos Alexandre Oliva, Alexandre Volpim e André Augusto Cesta e pelo técnico Prof. Ricardo Anido.

Page 23: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram em 2 de

março de 1997 em San Jose, California.

Page 24: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

IC-Unicamp

Page 25: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico 1997 - II Consun, Campinas

O único time brasileiro (e sul-americano) classificado para as finais mundiais do ICPC foi o time da PUC do Rio de Janeiro, formado pelos alunos Pedro Miller Rabinovitch, Diego Fernandes Nehab, Newton Cunha Sanches e dirigido por Roberto Ierusalimschy.

Page 26: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram no dia 28 de

fevereiro de 1998 em Atlanta, Georgia,

O time da PUC-RJ obteve a 24. colocação na competição

Page 27: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

PUC-Rio

Page 28: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico 1998 - Regional Sul-Americana do ICPC

São Paulo – Brasil, Antofagasta – Chile e Caracas – Venezuela

Três times sul-americanos (dois do Brasil) classificaram-se para as finais mundiais do ICPC:

Universidad de Buenos Aires: Dario Robak, Nicolas Stier Moses, Ignacio Laplagne, e técnico Pablo E. Coll;

UFPE: Carlos Santos da Figueira Filho, Marcelo Medeiros de Barros, Paulo Borges Oliva e técnica Katia S. Guimarães;

IME-USP: Eduardo Garcia de Freitas, Marcio Grossi de Almeida, Sergio Gabriel Tavares e técnico Aritanan Borges Garcia Gruber.

Page 29: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram em 8 a 12 de

abril de 1999 em Eindhoven, Holanda Os times do IME-USP e da

Universidad de Buenos Aires empataram como o melhor colocado entre os sul-americanos, obtendo a 28. colocação na competição Receberam o título de campeões latino-

americano do concurso

Page 30: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

IME-USPUFPE

Page 31: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico 1999 - Regional Sul-Americana do ICPC

Rio de Janeiro, Recife (Brasil), Talca (Chile), Buenos Aires (Argentina), Maracaibo (Venezuela)

Dois times sul-americanos (nenhum do Brasil) classificaram-se para as finais mundiais do ICPC:

Universidad Simon Bolivar: Eduardo Jimenez, Paul Pacheco, Rodrigo Meneses, e técnico Jose Ramirez;

Universidad de Buenos Aires: Dario Robak, Santiago Laplagne, Ignacio Laplagne, e técnico Nicolas Stier Moses

Page 32: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram em 18 de

março de 2000 em Orlando, Florida O time da Universidad de Buenos

Aires foi o melhor colocado entre os sul-americanos, obtendo a 22. colocação na competição Receberam o título de campeões

latino-americano do concurso

Page 33: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

Sem Fotos

Page 34: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico Maratona de Programação 2000

São Paulo, Campina Grande, Porto Alegre (Brasil), Santiago (Chile), Buenos Aires (Argentina), Merida (Venezuela)

Três times sul-americanos (dois do Brasil) classificaram-se para as finais mundiais do ICPC:

IC da Unicamp: Guilherme de Lima Ottoni, Ulisses Furquim Freire da Silva, Vinicius José Fortuna e técnico Ricardo Anido

Universidad de Buenos Aires: Ariel Futoransky, Alexis Prus, Sergio Demian Lerner e técnica Irene Loiseau

IME-USP: Pedro Luis Eira Velha, Ricardo Bueno Cordeiro, Tiago Tagliari Martinez e técnico Aritanan Gruber

Page 35: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram em 10 de março de

2001 em Vancouver, Canadá O time do IME-USP foi o melhor

colocado entre os sul-americanos, obtendo a 14. colocação na competição Medalha de bronze Receberam o título de campeões latino-

americano do concurso

Page 36: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

IME-USPIC-Unicamp

Page 37: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico Maratona de Programação 2001

Campinas, Natal, Caxias do Sul (Brasil), Punta Arenas (Chile), Buenos Aires (Argentina), Margarita (Venezuela)

Três times sul-americanos (dois do Brasil) classificaram-se para as finais mundiais do ICPC:

IME-USP: Pedro Luis Eira Velha, Carlos Cardonha, Marcel Kenji de Carli Silva e técnico Aritanan Gruber;

Universidad de Buenos Aires: Dario Fischbein, Flavia Bonomo, Sergio Florez, e coach Irene Loiseau;

UFPE: Hugo Santana, Leonardo Cunha, Igor Gatis e técnica Katia S. Guiimarães;

Page 38: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram em 23 de março de

2002 em Honolulu, Hawaii O time da Universidad de Buenos Aires

foi o melhor colocado entre os sul-americanos, obtendo a 10. colocação na competição Medalha de bronze O título de campeões latino-americano do

concurso

Page 39: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

IME-USP UFPE

Page 40: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico Maratona de Programação 2002

São Paulo, Recife, Porto Alegre (Brasil), Copiapó (Chile), Buenos Aires (Argentina), Barquisimeto, Caracas (Venezuela)

Quatro times sul-americanos (três do Brasil) classificaram-se para as finais mundiais do ICPC:

PUC Rio: Alexandre Correia Pinto, Juliana Abrantes Freire, Mauricio Carneiro, e coach Marcus Poggi;

UBA: Dario Fischbein, Flavia Bonomo, Sergio Florez, e coach Guilhermo Durán;

Unicamp: Claus Aranha, Ulisses Silva, Vinicius Fortuna, e coach Guilherme Ottoni;

UFPE: Alessandro Almeida, Emmanuel Macedo, Pedro Castro, e coach Sergio Queiroz.

Page 41: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram em 25 de março de

2003 em Los Angeles, California O time da Universidad de Buenos Aires

foi o melhor colocado entre os sul-americanos, obtendo a 12. colocação na competição medalha de bronze título de campeões latino-americano do

concurso

Page 42: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

Page 43: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico Maratona de Programação 2003

Campo Grande - Brasil, Campinas - Brasil, Erechim - Brasil, Fortaleza – Brasil, Concepción - Chile, Buenos Aires - Argentina, Maracaibo – Venezuela

Quatro times sul-americanos (dois do Brasil) classificaram-se para as finais mundiais do ICPC:

Universidad de Palermo: Christian Knoblauch, Félix Cuello, Horacio Peña e coach Patricia Gonzalez;

Universidad Simon Bolivar: Carlos Henriquez, Juan José B. Torrealba, Raimundo Mirisola e coach Vicente Yriarte;

Unicamp: Alberto Miranda, Renato Sousa, Thiago Hirai e coach Vinicius Fortuna;

UFPE: Mayerber Carvalho, Emmanuel Macedo, Pedro Castro e coach Katia Guimarães.

Page 44: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram em 30 de

março de 2004 em Praga, República Checa

O time da Universidad de Palermo foi o melhor colocado entre os sul-americanos Receberam o título de campeões

latino-americano do concurso

Page 45: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

Page 46: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico Maratona de Programação 2004

Ocorreu em duas fases no Brasil. A primeira fase ocorreu no dia 2 de outubro

de 2004 em 14 sedes espalhadas pelo país Trinta e quatro times brasileiros

classificaram-se para a Final Brasileira, disputada nos dias 12 e 13 de novembro de 2004 na Universidade de São Paulo, São Paulo.

Page 47: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico Cinco times sul-americanos (três brasileiros) classificaram-

se para as finais mundiais do concurso do ICPC em Shanghai, Rep. Popular da China:

ITA: Humberto Silva Naves, Carlos Stein Naves de Brito, Daniel Lelis Baggio e coach Armando Gouveia

Universidad de Buenos Aires: Francisco (Pancho) Roslan, Hernán (Pasto) Bandura, Pablo Heiber e coach Dario Fischbein

Universidad Simon Bolivar: Carlos Henriquez, Juán José Bustamante, Raimundo Mirisola e coach Vicente Yriarte.

Unicamp: Thiago Hirai, Alberto Miranda, Renato Sousa e coach Vinicius Fortuna

Universidade Federal do Rio de Janeiro: Debora da Silva, Thatiana de Oliveira, Tiago Mota e coach Pedro Demasi.

Page 48: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico As finais ocorreram de 3 a 7 de

abril de 2005 em Shanghai, República Popular da China O time do ITA foi o melhor colocado

entre os sul-americanos, resolvendo 4 problemas e terminando na 29a. colocação geral.

Receberam o título de campeões latino-americanos do concurso

Page 49: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

Page 50: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico Maratona de Programação 2005

Ocorreu em duas fases no Brasil. A primeira fase ocorreu no dia 10 de

setembro em 19 sedes espalhadas pelo país Vinte e nove times brasileiros classificaram-

se para a Final Brasileira, disputada nos dias 11 e 12 de novembro nas Faculdades COC em Ribeirão Preto, São Paulo.

Um time foi eliminado por violação às regras (PUC-Rio Paticumbum Prugurundum)

Page 51: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico 2 Times brasileiros classificados para a

final mundial em Houston (2006) ITA in the case, it is: Carlos Stein Naves de

Brito, Davi Figueiredo, Humberto Silva Naves, coach Armando R. Gouveia

PUC-Rio Link-EdiSamba: Daniel Fleischman, Fábio Dias Moreira, Roberto Cavalcante, coach Marcus Poggi

Page 52: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Histórico

Page 53: Grupo de Estudos para a Maratona de Programação

Maratona de Programação 2006178 Times – 82 Instituições

89

25 2313 11

83

2230

145

90

34 3017

70

102030405060708090

100

SE S NE CO N

Times/ 2004Times/ 2005Times/ 2006

Page 54: Grupo de Estudos para a Maratona de Programação

Maratona de Programação 2005 Participação por Estado (1)

57

21

10 10 9 8 8 7

61

10 80

124

10 9

010203040506070

SP MG SC AM RJ PR MS RS

Times/ 2004Times/ 2005

Page 55: Grupo de Estudos para a Maratona de Programação

Maratona de Programação 2005 Participação por Estado (2)

7

5 5 54

21 1 1

0 0

5

0

8

4 4

01

5

0

9

3

0123456789

10

RN BA CE PB DF ES PE PA MT MA SE

Times/ 2004Times/ 2005

Page 56: Grupo de Estudos para a Maratona de Programação

Maratona de Programação 2006Participação por Região

1

62

18

21

64

27

5

0

5

10

15

20

25

30

N NE CO SE S

Times na FinalNacional 2005Times na FinalNacional 2006

Page 57: Grupo de Estudos para a Maratona de Programação

Crescimento da Competição

4068

114 119

161 155178

82

26211813

81836061

392622

020406080

100120140160180200

1996

1997

1998

1999

2000

2001

2002

2003

2004

2005

2006

TimesEscolas

Page 58: Grupo de Estudos para a Maratona de Programação

Custo da Maratona

010,00020,00030,00040,00050,00060,00070,00080,00090,000

100,000

2000 2001 2002 2003 2004 2005

IBMCNPqInscriçõesCusto Total

Page 59: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Participação da UFPE no Evento

Page 60: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento Primeira participação em 1996.

2º Lugar em 1997. UFPE: Carlos Santos da Figueira

Filho, Marcelo Medeiros e Paulo Borges Oliva, técnica: Katia Silva Guimarães;

1 Vaga para final mundial.

Page 61: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento 2° Lugar em 1998. UFPE: Carlos Santos da Figueira

Filho, Marcelo Medeiros de Barros e Paulo Borges Oliva, técnica Katia S. Guimarães;

Participação na fase Mundial em Eindhoven, Holanda.

Page 62: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento 8° Lugar em 1999. Medalha de Bronze

Page 63: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento 11° Lugar em 2000.

4° e 6° lugares em 2001 O time HSIG consegue uma vaga

para fase mundial. Hugo Santana, Leonardo Cunha e

Igor Gatis, técnica Katia S. Guimarães;

Page 64: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento 1° e 2° lugares em 2002 Só 1 time por instituição pode ir à fase

mundial em Los Angeles. Que pena AM/PM UFPE: Alessandro Almeida, Em

manuel Macedo, Pedro Castro, e coach Sergio Queiroz ;

HSIG UFPE: Hugo Santana, Igor Gatis, Leonardo Cunha, e coach Mozart Araújo Filho ;

Page 65: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento

Page 66: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento 1° em 2003. UFPE: Mayerber Carvalho,

Emmanuel Macedo, Pedro Castro e coach Katia Guimarães

Participação na Final Mundial em Praga, Republica Checa.

Page 67: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento

Page 68: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento 8° em 2004. UFPE: Gustavo Carvalho, Marcos

Silva, Renato Ferreira, coach Katia Guimarães.

Page 69: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento 2005… PC Jam 1° Lugar na fase regional ( 2

problemas ) 22° Lugar na final brasileira ( 3

problemas )

Page 70: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento

Page 71: Grupo de Estudos para a Maratona de Programação

Participação da UFPE no Evento 2006… PC Jam 2° Lugar na fase regional ( 4

problemas ) 1 vaga para final brasileira na

sede.

Page 72: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Formato

Page 73: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Times compostos por três alunos e um

técnico – three contestants and a coach

Cada time pode ter no máximo um reserva, e que pode substituir um competidor apenas antes do início da competição

Cada time deve ter um nome. Fica a critério do time escolhê-lo.

Page 74: Grupo de Estudos para a Maratona de Programação

Nome dos Times da Final Nacional 2005

FATEC Americana - Time 1

ICMC - IfThenElse IME – Atlântico ITA – 09

DominusITA – In the case, it

isPUC-Rio

Link-EdiSambaAM: Cai-Cai

balão UnB =o|

UnB =oD USP Ciências o quê? IME USP A IME USP C

URI younglings #include “CC-UEM” UECE - log(n) UNESP

The Empire strikes back

UFMG lamadivers UFPE PC Jam UFS

Cadeirinha Relâmpago BCC/UFU 02

UFMA “LSD” UFPA Team DCC UFRJ DIE Judge

DCC UFRJ Frost Byte

UFRN HDD 1 UFRN JumenTeam UFRGS 1 Unicamp

Dois baianos atrás da serra

UnicampEsqueceram de Mim 3

Page 75: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Apenas um computador é alocado

para o time inteiro Período de competição de 5 horas Todos os times iniciam a competição

com penalidade de tempo igual a zero O time que resolver mais problemas,

com menor tempo total como critério de desempate, é o vencedor

Page 76: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Apenas é permitido acesso a materiais

impressos durante o contest Para cada problema em um problem

set o time deve implementar uma solução para resolvê-lo e submeter o código fonte aos juízes para avaliação

As implementações devem ser em C, C++ ou Java (a critério do time)

Cada solução aceita pelos juízes é premiada com um balão

Page 77: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Formato A cada solução aceita, o tempo decorrido desde

o início da competição até a submissão da solução correta é somado ao tempo total do time

A cada solução rejeitada, uma penalidade de 20 minutos é somada ao tempo total do problema

Quando um problema for solucionado pelo time, todas as penalidades acumuladas associadas ao problema também serão somadas ao tempo total do time

Page 78: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Cada problema contém:

Informações para contextualização (background)

O enunciado do problema Informações sobre a entrada (Input) Informações sobre a saída (Output) Exemplo de entrada (Sample Input) Exemplo de saída (Sample Output)

Page 79: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Informações para contextualização

(background) Contém informações gerais que

servem apenas para dar sentido ao problema, encaixando-o no que poderia ser uma situação real no qual o mesmo se aplica.

Page 80: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Enunciado do problema

Contém as intruçõ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: Para este problema, seu trabalho é fazer um programa que, 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

Page 81: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Informações sobre a entrada (Input):

Informações sobre a formatação da entrada Ex: Cada caso de teste é composto por dois números,

N e M, sendo, respectivamente…. Contém informações sobre as variáveis que

devem ser lidas pela solução submetida Ex: N é o número inicial, M é o número final

Quais as limitações das informações de entrada Ex: 1 < N < 1000000, 2 < M < 2000000

Informações sobre como terminar a leitura do caso de teste

O fim de um caso de teste é indicado por N = M = 0.

Page 82: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Informações sobre a saída (Output)

Contém informações sobre como a saída deverá ser formatada

Ex: Para cada caso de teste, seu programa deverá implimir uma linha “Instance #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.

Page 83: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Exemplo de entrada (Sample Input)

Contém um pequeno exemplo sobre o que é uma entrada válida para o problema

Ex:

1 84 1000 0

Page 84: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Formato Exemplo de saída (Sample Output)

Contém a saída para o exemplo de entrada (Sample Input) dado

Ex:

Instance #1:36Instance #2:5044

Page 85: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Formato Os juízes possuem datasets que

são utilizados para testar a solução submetida

Esses datasets contém instâncias de casos de testes bastante diferentes dos exemplos contidos nos problemas do problem set

Page 86: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Os juízes podem dar uma das seguintes

respostas a uma solução submetida por um time: Yes No – Wrong Answer No – Presentation Error No – Time Limit Exceeded No – Runtime Error No – Compile Error

Page 87: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato Nenhuma outra informação será

dada ao time caso algum problema tenha sido detectado na solução submetida. A única informação que o time obterá dos juízes, acerca da correção de uma solução, será uma das respostas mencionadas

Page 88: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Formato Yes

Resposta dada pelo juíz a uma solução que passou em todos os testes de caso, dentro do tempo limite designado para que a solução submetida pelo time retornasse as respostas

O time ganha um balão ao receber um Yes para uma solução submetida

Page 89: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato No – Wrong Answer

A solução submetida pelo time não retornou a resposta correta para um ou mais dos testes de casos contidos no dataset associado ao problema

O juíz não irá informar em qual teste de caso a solução submetida pelo time falhou, ou dar qualquer dica sobre a falha

Page 90: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato No – Presentation Error

A saída da solução não obedeceu algumas regras 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

A solução submetida pelo time está 99% correta: falta apenas verificar a formatação de saída

Por estar apenas 99% correta, o time não ganha o balão

Page 91: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato No – Time Limit Exceeded

Significa que a solução submetida pelo time demorou mais tempo processando a entrada dos juízes do que os juízes designaram

Cada problema possui um tempo limite associado

O tempo limite é calculado de acordo com a complexidade do problema, e multiplicado por um fator que reflete as capacidades do hardware no qual o problema será corrigido, linguagem utilizada, etc.

Page 92: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato No – Runtime Error

Significa que, durante o processamento das entradas, o programa abortou a execução (abnormally)

Pode ocorrer devido a uma exceção não tratada, NULL pointer, divisão por zero, devido ao uso de chamadas inválidas, etc.

Os juízes não informarão ao time por que a falha (Runtime Error) ocorreu

Page 93: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Formato No – Compile Error

O código fonte da solução, submetida pelo time, não compilou na máquina dos juízes

Pode ocorrer devido ao time ter dito que o código fonte da solução submetida estava em C, quando na verdade estava em Java (common mistakes)

Pode ocorrer quando o time muda um detalhe no código fonte e esquece de testar, antes de re-enviar a solução

Quando o time esquece de importar os headers necessários.

Ex: #include <esqueci.h>

Page 94: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Formato O time não ganhará mais pontos

por problemas 90% resolvidos, por elegência na implementação do algoritmo, ou por algoritmos extremamente eficientes

The fastest programmers, as opposed to the fastest programs, win (programming challenges)

Page 95: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Formato Durante a competição, o time terá

direito a: Imprimir o código fonte de um problema

(tasks) Solicitar esclarecimentos sobre um

problema (clarifications) Pedir ajuda (S.O.S.)

Isso tudo é solicitado através do ambiente computacional

Page 96: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Ambiente Computacional

Page 97: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Ambiente Computacional O ambiente para submissão de problemas utilizado

na final nacional é o BOCA – BOCA Online Contest Administrador

Desenvolvido por Cássio Polpo de Campos (PUC-SP) http://maratona.ime.usp.br/manualBOCA.html

O sistema operacional utilizado é o Maratona Linux Contém todas as ferramentas necessárias para o time

durante a competição http://maratona.ime.usp.br/dicasLinux.html Sistema operacional Linux adaptado por Cássio Polpo de

Campos para competições de programação

Page 98: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Por que Participar?

By Vinícius Fortuna

Page 99: Grupo de Estudos para a Maratona de Programação

Por que Participar?1. Desafio

Desafios intrigam as pessoas e são uma ótima forma de exercitar a mente. É um grande prazer quando conseguimos vencer um desafio difícil por nossos próprios méritos, pois nos sentimos orgulhoso e mais capazes.

Page 100: Grupo de Estudos para a Maratona de Programação

Por que Participar?2. Competição

Participar de uma competição saudável é sempre uma diversão. Pode ser também um motivo de orgulho, pois você está lá defendendo sua universidade, sua cidade, ou mesmo seu estado, contra equipes do país inteiro.

Além disso também tem sempre aquela rivalidade característica de competições entre equipes de uma mesma cidade ou que costumam ficar próximas na classificação. É muito recompensador saber que após o esforço de dedicar um tempo à competição você chegou na frente de rival.

Page 101: Grupo de Estudos para a Maratona de Programação

Por que Participar?3. Desenvolvimento Pessoal

Programar em competições de programação envolve estar sempre encontrando problemas novos.

Dessa forma, com a prática, o competidor consegue desenvolver uma habilidade de programar muito mais refinada que o programador mediano.

Page 102: Grupo de Estudos para a Maratona de Programação

Por que Participar? O competidor consegue:

Programar muito mais em menos tempo. Escrever códigos mais enxutos. Desenvolver programas mais eficientes. Reduzir drasticamente o número de erros em

seus programas. Tornar-se "fluente" em sua linguagem de

programação. Isso é algo a ser valorizado, pois com essas

habilidades o competidor certamente se torna mais capaz para trabalhar tanto no mercado quanto na universidade.

Page 103: Grupo de Estudos para a Maratona de Programação

Por que Participar?4. Currículo

A participação em uma competição nacional de programação pode ser uma boa propaganda para seu currículo (inclusive para pós-graduação).

De forma similar à idéia de Bill Poucher, diretor da ACM ICPC, só de alguém estar na universidade já está entre os melhores. Ser o representante da universidade é estar entre os "melhores dos melhores". Passar para a final nacional é estar entre os "melhores dos melhores dos melhores", e por aí vai.

Page 104: Grupo de Estudos para a Maratona de Programação

Por que Participar?5. Novos Contatos

Participar da Maratona de Programação é uma boa oportunidade de conhecer novas pessoas de diferentes universidades, cidades e mesmo de outros estados.

E daí pode surgir inclusive novas amizades. Também é uma chance de fazer novos contatos e passar a trocar idéias sobre projetos que abordam temas comuns ou para uma eventual pós-graduação ou mesmo um emprego.

Page 105: Grupo de Estudos para a Maratona de Programação

Por que Participar?6. Prêmios

É claro, toda competição tem sempre seus prêmios, o que não deixa de ser um estímulo.

Tanto na Maratona de Programação quanto na OBI a maior parte dos prêmios são medalhas. Na Maratona há medalhas para os 10 primeiros colocados. O campeão também ganha um troféu. Geralmente também há medalhas ou outros prêmios locais para os melhores do site, por exemplo.

Page 106: Grupo de Estudos para a Maratona de Programação

Por que Participar? Além das medalhas, os melhores colocados da

Maratona recebem da IBM Internacional umas lembrancinhas tipo feirinha do Paraguai:

Relógio Caneta Agenda eletrônica de 6Kb Webcam (que só funciona razoavelmente à luz do sol (!)

e é incompatível com WinXP e Linux...) Infelizmente, apesar de ser uma gigantesca empresa

de informática, seus prêmios não são como os notebooks entregues em outras competições nacionais como o Desafio Sebrae… Mas não deixam de ser prêmios.

Page 107: Grupo de Estudos para a Maratona de Programação

Por que Participar?7. Viagens

Viajar é muito bom e eu gosto. A menos que o competidor seja da cidade do site, ele vai acabar viajando logo na primeira fase da Maratona.

Normalmente essa viagem é curta e com gastos bancados pela própria universidade (há exceções).

Se a equipe se classifica para a final nacional, aí é outra viagem, dessa vez maior.

Page 108: Grupo de Estudos para a Maratona de Programação

Por que Participar?8. Mundial

Na minha opinião o maior estímulo que alguém pode ter é ir para o Mundial. Mas esse não é um estímulo para grande parte dos competidores, pois apenas o primeiro e provavelmente o segundo da Maratona vão para o Mundial.

Page 109: Grupo de Estudos para a Maratona de Programação

Por que Participar? No entanto se sua equipe estiver bem

preparada então vale à pena se esforçar para conseguir ir ao Mundial. É uma viagem inesquecível ao exterior onde se entra em contato com pessoas e culturas do mundo inteiro.

Além disso a emoção de estar representando o Brasil no exterior entre os melhores do mundo é incomparável.

Page 110: Grupo de Estudos para a Maratona de Programação

Por que Participar?9. Áreas de Pesquisas Afins

(by Weverton Cordeiro) Os conhecimentos adquiridos durante os

treinamentos para a Maratona de Programação, tais como Programação Dinâmica, Backtracking, Geometria Computacional, etc, podem ser extremamente úteis caso você decida seguir uma linha de pesquisa afim, tal como Bioinformática, Computação Gráfica, Otimização Combinatória, entre outras.

Page 111: Grupo de Estudos para a Maratona de Programação

Por que Participar?Ex-Maratonistas

(by Carlos E Ferreira) Alexandre Oliva (Unicamp): sistemas distribuídos Guilherme Ottoni (Unicamp): concorrência Rodrigo Schmidt (unicamp): Inteligência Artificial Pedro Eira (IME): Computação Gráfica Tiago Martines (IME): Interface homem-máquina Carlos Cardonha (IME): teoria da computação Pedro Demasi (UFRJ): linguística computacional Diego Nehab (PUC-Rio): linguagens de programação Paulo Oliva (UFPE): IA.

Page 112: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Regras da Competição

Page 113: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Regras No máximo três times por instituição de ensino ou

departamento Todos os times de uma mesma instituição ou

departamento devem competir na mesma sede No máximo dois times de uma mesma instituição

ou departamento se classificam para a final nacional

No máximo um time de uma instituição de ensino se classifica para a final mundial

Um time só se qualifica à final se resolver no mínimo dois problemas na regional

Page 114: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Regras Prazo para a inscrição de times deve ser

obedecido Pedido de inscrição será atendido por ordem

de chegada uma sede comporta no máximo 50 times

O coach de uma instituição pode ser o coach de todos os times

O coach deve ser um docente, ou então ser indicado por um representante da instituição, mediante preenchimento de um formulário

Page 115: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Regras Qualquer comunicação entre o coach e o time,

durante a competição, é proibida Bem como a utilização de qualquer dispositivo

eletrônico e material on-line Times compostos por três competidores

oficiais mais um reserva O reserva apenas pode substituir um competidor

antes do início da competição Há certas condições que devem ser satisfeitas

por todos os integrantes do time (exceto coach) para um time ser considerado elegível

Page 116: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Regras

Os membros do time devem ter participado de no máximo uma final mundial do concurso da ACM e…

De no máximo 4 (quatro) regionais sul-americanas do concurso e…

E (adaptado para as competições de 2007)… Ter iniciado seus estudos universitários no ano de

2002 ou anos posteriores (a contar do início do primeiro curso universitário do aluno)

Ou ter nascido em 1983 ou anos posteriores

Page 117: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Regras Se (adaptado para as competições de 2007)

o competidor já participou de duas finais mundiais ou

o competidor já participou de cinco regionais ou (o competidor iniciou seus estudos após o fim do

ensino médio no ano 2002 ou anos anteriores e o competidor nasceu em 1983 ou anos anteriores)

Então o competidor não é elegível

se não o competidor é elegível

Page 118: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Como se Preparar?

Page 119: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Como se Preparar? Para o competidor

Escolher a linguagem. Noções de Complexidade de Algoritmos Dominar as estruturas de dados básicas. Dominar Entrada e Saída Ficar à vontade com Recursão e Backtracking. Aprender Grafos. Aprender Programação Dinâmica. Aprender técnicas para resolução de problemas

envolvendo geometria computacional

Page 120: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Como se Preparar? Para o time

Conhecer as habilidades e fraquezas de cada um dos colegas

Treinar simulando as mesmas condições que a competição real (um computador, caderno de problemas, tempo limitado, etc.)

Page 121: Grupo de Estudos para a Maratona de Programação

Maratona de Programação – Como se Preparar? Há sites na Internet com Juízes Online

(Online robot judges), que podem ser utilizados para treinamento individual ou do time http://www.programming-challenges.com http://acm.timus.ru (Ural State University) http://acm.uva.es (Universidade de Valladolid)

Lista de discussão [email protected] (Lista de

Discussão Nacional)

Page 122: Grupo de Estudos para a Maratona de Programação

Maratona de Programação

Dicas

Page 123: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Dicas A Maratona de Programação é uma

competição de criação e implementação de Algoritmos. Tratamento de erros (quando o escopo da

entrada é bem definido) e Interfaces com o usuário são detalhes com os quais os competidores não precisam se preocupar (e não devem)

É melhor escrever nomes de variáveis e funções sugestivos do que escrever comentários no código

Page 124: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Dicas O caderno de problemas possui problemas

fáceis, moderados e difíceis. Se um problema parecer de difícil implementação, considere abordar outro problema

Entretanto, alguns problemas podem parecer difíceis, e outros podem parecer fáceis Ex: Dados dois polígonos, encontrar a área de

intersecção. Simples?

Page 125: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Dicas Certifique-se de que o problema

realmente foi entendido, amntes de partir para a implementação

Certifique-se de que o programa está correto, antes de submeter ao juíz. Uma penalidade pode custar mais caro que 10 minutos verificando o problema Após tentar as entradas e saídas de exemplo,

crie instâncias de entrada que exploram os valores limites especificados no problema

Page 126: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Dicas Procure sempre evitar o processamento

desnecessário de dados, tais como a expansão de todos os ramos de uma árvore.

Típico erro quando se aprender a programar: testar (i == j) para se varrer os elementos da diagonal principal de uma matriz

Procure definir papeis para cada um dos integrantes do time durante a competição

Times cujos competidores brigam pelo terminal durante a competição não vão a lugar nenhum

Há apenas um computador disponível, portanto, procure utilizar o mesmo apenas para digitação de soluçoes, e maximizar o uso do mesmo

Page 127: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Dicas Caso a sua solução para um

problema receba uma das respostas No – Wrong Answer ou No – Time Limit Exceeded por duas vezes seguidas, considere entregar o problema a outra pessoa para lê-lo, entendê-lo e implementá-lo

Page 128: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Dicas Verifique periodicamente o standing. Ele conterá

informações valiosas sobre problemas fáceis e difíceis. Se vários times acertaram um problema que seu time ainda não estudou, seria o caso de considerar estudar esse problema

Entretanto, evite implementar o “algoritmo da formiga”. Muitas vezes, os times saem resolvendo problemas na ordem em que aparecem no caderno, ao invés de utilizar a baixa complexidade do problema como critério. Assim, seu time pode ter a falsa sensação de que um problema é fácil, se seguir os passos de outro time.

Page 129: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Dicas Adicione um loop para estouro de tempo ou então

implemente uma divisão por zero em trechos onde você imagina que seu programa possa estar falhando, caso seu time receba sucessivas vezes a resposta No – Wrong Answer. Seu time obterá um bit de informação, porém em troca de uma penalidade de 20 minutos

Não adianta iniciar um problema nos minutos finais da competição, uma vez que geralmente os problemas que faltam ser resolvidos são de compexidade maior. É melhor modelar alguns problemas no início ou utilizar os minutos finais para a depuração de problemas já implementados, mas que ainda não foram aceitos pelo juízes

Page 130: Grupo de Estudos para a Maratona de Programação

Maratona de Programação - Dicas Procure adotar uma estratégia para seu time

Estratégia 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 modeloados pelo time, para finalmente serem definidos os problemas que serão implementados

Estratégias possuem pontos positivos e negativos, e nem sempre são adequadas a todos os times. Procure elaborar uma estratégia que explore ao máximo as capacidades individuais

Page 131: Grupo de Estudos para a Maratona de Programação

Grupo de Estudos da UFPE para a Maratona de Programação

Objetivos do Grupo de Estudos

Page 132: Grupo de Estudos para a Maratona de Programação

Objetivos do Grupo de Estudos Criar a cultura na UFPE de participação

na Maratona de Programação Promover a discussão entre os

integrantes sobre a Maratona de Programação

Propor o estudo conjunto de Estruturas de dados Ordenação Aritmética e Álgebra Análise Combinatória

Page 133: Grupo de Estudos para a Maratona de Programação

Objetivos do Grupo de Estudos

Teoria dos Números Backtracking Algoritmos para Busca em Grafos Programação Dinâmica Geometria

Propor atividades de pesquisa e apresentações dos temas acima mencionados

Simulados nos moldes da Maratona de Programação

Page 134: Grupo de Estudos para a Maratona de Programação

Grupo de Estudos da UFPE para a Maratona de Programação http://www.cin.ufpe.br/~time-ufpe

Disponibilização de Apresentações Problem sets Datasets Materiais de suporte (livros, apostilas,

etc.)

Page 135: Grupo de Estudos para a Maratona de Programação

Grupo de Estudos da UFPE para a Maratona de Programação

Primeira Atividade(Valendo Nota… )

Page 136: Grupo de Estudos para a Maratona de Programação

Grupo de Estudos da UFPE para a Maratona de Programação Primeira Atividade do Grupo

Comecem a praticar para o primeiro treino. Data a ser definida (depende de alocação de

laboratório) A principio treinos individuais (sem necessidade de

técnico) Melhores colocados farão parte do time. Nosso problem set não irá requerer

conhecimento teórico ou técnicas avançadas de programação …

… mas que irá exigir raciocínio lógico, e uma boaestratégia.

Page 137: Grupo de Estudos para a Maratona de Programação

Outros Grupos de Estudos e Competições Internas Grupo de Estudos da Universidade Estadual

do Ceará http://larces.uece.br/~maratona

CPU – Clube de Programação UCPel http://cpu.ucpel.tche.br/

Maratona de Programação – DCC UFRJ http://www.dcc.ufrj.br/~maratona/tiki-index.php

Maratona de Programação dos Alunos do IME-USP http://www.ime.usp.br/~cef/maratona.html

Page 138: Grupo de Estudos para a Maratona de Programação

Agradecimentos Vinícius José Fortuna Carlos Eduardo Ferreira E às pessoas que, mesmo sem

saber, contribuíram para a elaboração desta apresentação…

Page 139: Grupo de Estudos para a Maratona de Programação

Referências The ACM-ICPC Web Site

http://icpc.baylor.edu Competições de Programação

http://lampiao.ic.unicamp.br/maratona Site oficial da Maratona de Programação

http://maratona.ime.usp.br Common Mistakes in Online and Real-time

Contests http://www.math.luc.edu/~anh/281/basics.html

Programming Challenges http://www.programming-challenges.com

Page 140: Grupo de Estudos para a Maratona de Programação

Obrigado