# ACM International Collegiate Programming Contest

A ACM International Collegiate Programming Contest (também conhecido por ICPC) é uma competição anual de programação entre universidades do mundo todo. A competição é patrocinada pela IBM. Com sede na Universidade Baylor e regiões autônomas em todos continentes, o ICPC é organizado pela Association for Computing Machinery (ACM).
Cada equipa tem somente um computador, sendo necessário que haja trabalho em equipe e habilidade para resistir à pressão e para vencer.

## História

O ICPC tem sua raiz em uma competição sediada na Universidade A&M do Texas em 1970 organizada pelo Capítulo Alpha da Sociedade de Honra da Ciência da Computação Upsilon Pi Epsilon. A competição evoluiu para sua forma atual em 1977, com as primeiras finais organizadas em conjunto com a Conferência de Ciência da Computação da ACM.
De 1977 a 1989 a competição incluiu principalmente equipas dos EUA e Canadá. Com sede na Universidade Baylor desde 1989, com regionais estabelecidas dentro da comunidade das universidades no mundo todo, com supervisão da ACM e apoio substancial da indústria, o ICPC se tornou uma competição de âmbito global, com times de 84 países em 2005.
As Finais Mundiais do ACM International Collegiate Programming Contest se tornaram ao longo de sua história um evento de 4 dias organizado nas melhores localidades mundo afora. Na final Mundial de 2009, que foi realizada em Estocolmo na Suécia, o evento seguiu a tradição do Prêmio Nobel, com a abertura ocorrendo no Palácio Municipal e o encerramento na sala de concerto da cidade, lugar onde também é realizada a cerimónia de entrega do Prêmio Nobel.

## Regras da competição

O ICPC é uma competição em equipa. As regras estipulam que cada equipa seja composta de três estudantes. Os participantes devem ser estudantes universitários, que tenham tido no máximo cinco anos de educação universitária antes da competição ou tenham até 23 anos até o final do ano anterior ao ano da final mundial, ou seja, basta que cada estudante preencha um dos dois requisitos descritos para poder participar. Estudantes que tenham competido em duas Finais Mundiais ou cinco competições regionais não podem participar novamente.
Durante a competição, as equipas têm 5 horas para resolver entre 8 e 11 problemas computacionais (com tipicamente 8 problemas para as regionais e 10 para a final mundial). As soluções devem ser submetidas em C, C++ ou Java. Os programas são então testados com casos de teste e, se o programa produzir alguma resposta errada ou não for suficientemente eficiente, ele não é aceite e a equipa é notificada disso.
O vencedor é a equipa que resolver mais problemas corretamente. Se necessário, em caso de empate no número de problemas resolvidos, a classificação das equipas é determinada pela soma dos tempos da submissão correta de cada problema mais 20 minutos para cada submissão rejeitada em um problema que acabe sendo resolvido.

## Regionais e final mundial

A competição dá-se em várias etapas. Muitas universidade realizam competições internas para definir seus representantes na fase regional. Então as equipas inscritas na competição disputam entre si na fase regional para definir os representantes de cada região na final mundial. No caso do Brasil existem ainda as sub-regionais, que ocorrem em várias sedes pelo país a fim de definir quais serão os times que irão para a fase regional. Cada universidade pode inscrever quantas equipas desejar na fase sub-regional, mas só duas equipas de cada instituto podem seguir adiante.
Cada regional manda pelo menos uma equipa para a final mundial, com o número de equipas que cada uma delas manda variando de acordo com o número de instituições e equipas inscritas, além do desempenho deles na prova.
No Brasil a regional é organizada pela Maratona de Programação, que coordena a fase sub-regional e a fase regional da competição. Na regional brasileira, que é também a fase final da Maratona de Programação, chamada de final brasileira, os 10 melhores times recebem medalhas, sendo ouro para os três primeiros, prata para os três seguintes e bronze para os demais. Além disso, há ainda um troféu para o campeão do evento.
Em Portugal as equipas disputam o South Western European Regional Contest (SWERC) com Espanha, Itália, Suiça, França, Austria e até 2008 uma parte da Alemanha. Antes deste evento decorre todos os anos a Maratona Inter-Universitária de Programação (MIUP) só para equipas portuguesas. Algumas universidades usam esta prova para seleccionar as melhores equipas para participar no SWERC.

## Maiores Vencedores

As 32 edições do ICPC tiveram vencedores de 23 universidades diferentes, originárias de nove países. Apenas 8 universidades foram vitoriosas mais que uma vez.
Entre países, apenas cinco conquistaram o torneio mais de uma vez, com excelente registo dos Estados Unidos, que já venceram 17 vezes.
Universidades com mais títulos :
| Títulos | Universidade |
| 3 | Universidade de Stanford |
| 3 | Universidade de São Petersburgo de Tecnologia da Informação, Mecânica e Ótica |
| 2 | Instituto de Tecnologia da Califórnia |
| 2 | Universidade de São Petersburgo |
| 2 | Universidade Jiao Tong de Xangai |
| 2 | Universidade de Varsóvia |
| 2 | Universidade de Waterloo |
| 2 | Universidade de Washington em St. Louis |
Títulos por país :
| Títulos | País |
| 17 | United States |
| 6 | Rússia |
| 2 | China |
| 2 | Canadá |
| 2 | Polônia |
| 1 | Austrália |
| 1 | República Tcheca |
| 1 | Alemanha |
| 1 | Nova Zelândia |