Competición Internacional Universitaria de Programación

La Competición Internacional Universitaria de Programación (en inglés International Collegiate Programming Contest, abreviado ICPC) es una competición anual de programación y algorítmica entre universidades de todo el mundo, donde prima el trabajo en equipo, el análisis de problemas y el desarrollo rápido de software. Tiene su sede en la Universidad de Baylor y está liderada por su Director Ejecutivo y profesor de esta universidad, el Dr. William B. Poucher. La ICPC lleva a cabo concursos regionales autónomos que cubren los seis continentes y culminan en una final mundial cada año. En 2018, la participación del ICPC incluyó a  estudiantes de 3 233 universidades en 110 países. 

La ICPC es auspiciada por la Fundación ICPC y opera bajo acuerdos con las universidades anfitrionas y organizaciones sin fines de lucro, todo de acuerdo con las Políticas y Procedimientos del ICPC.  Desde 1977 hasta 2017, el ICPC contó con los auspicios de la Association for Computing Machinery (ACM) y se denominó ACM-ICPC.

Misión 
La Competición Internacional Universitaria de Programación es una actividad extracurricular y deporte de programación competitiva para estudiantes de universidades de todo el mundo. Las competiciones de ICPC brindan a los estudiantes aventajados la oportunidad de interactuar, demostrar y mejorar sus habilidades de trabajo en equipo, programación y resolución de problemas. La ICPC es una plataforma global para la academia, la industria y la comunidad para destacar y elevar las aspiraciones de la próxima generación de profesionales de la computación en su búsqueda de la excelencia.

Historia 
La ICPC es una competición que se inició en la Universidad A&M de Texas en 1970. Pasó a ser una competición con varias rondas clasificatorias en 1977 y la final mundial se organizó en colaboración con la ACM Computer Science Conference.

De 1977 a 1989, compitieron principalmente equipos de Estados Unidos y Canadá. La sede central está ubicada desde 1989 en la Universidad de Baylor y las competiciones regionales se ubican en universidades de todo el mundo, bajo el auspicio de ACM y la colaboración de grandes empresas de la industria informática. La ICPC ha ido aumentando en número de participantes y países, por lo que ahora es una competición mundial con equipos de 103 países (en 2016).

Desde 1997 el principal patrocinador es IBM y la participación en la competición ha aumentado enormemente. En 1997 participaron 840 equipos de 560 universidades. En 2016 participaron 46381 estudiantes de 2948 universidades de todo el mundo. El número de equipos aumenta entre un 10% y un 20% cada año.

Reglas de la competición 
El ICPC es una competición por equipos. Las reglas actuales estipulan que cada equipo ha de tener exactamente 3 miembros. Los miembros han de ser estudiantes universitarios, que hayan estudiado menos de 5 años en la universidad antes del concurso. Los estudiantes que hayan competido en dos finales mundiales (World Finals) o cinco competiciones regionales no pueden participar otra vez.

Durante la competición, los equipos tienen alrededor de 5 horas para resolver entre 8 y 15 problemas (lo normal es 8 para las competiciones regionales y 12 para la final). Se deben programar las soluciones con C, C++, Java, Ada, Python o Kotlin (aunque no está garantizado que todos los problemas sean solucionables usando cualquier lenguaje, el ICPC establece que los jueces habrán resuelto todos los problemas en Java y C++, tanto para los regionales como para la final mundial). Los programas enviados por los equipos se compilan y ejecutan con unos ciertos datos de entrada, si el programa falla al calcular la solución, el equipo es notificado del error y pueden enviar nuevamente el programa o probar con otros problemas.

El ganador es el equipo que resuelve más problemas. Si hay equipos empatadas con el mismo número de problemas resueltos, el orden de clasificación se calcula a partir de los que han tardado menos en resolver los problemas.

Ejemplo: si un equipo A ha enviado sus soluciones para 2 problemas los 60 y 120 minutos desde el inicio del concurso, y otro equipo B lo ha hecho a los 80 y 90 minutos. El desempate entre ambos equipos se haría mirando los tiempos, para el equipo A: 60+120 = 180 minutos. Para el equipo B: 80+90 = 170 minutos. El equipo B ganaría.

El tiempo que se toma para los desempates es el tiempo que ha pasado desde el inicio del concurso más 20 minutos por cada solución incorrecta enviada. En el ejemplo anterior, si el equipo A hubiera enviado 2 soluciones incorrectas para su primer problema, su tiempo final sería: 20+20+60+120 = 220.

El ICPC se diferencia de otras competiciones de programación (por ejemplo la IOI) en que suele tener un gran número de problemas (8 o más para resolver en 5 horas) y que es una competición por equipos con un solo ordenador. Es necesario un buen entendimiento entre los miembros de un equipo para conseguir la victoria.

Competiciones locales, regionales y final mundial 
La competición tiene distintas fases clasificatorias. Algunas universidades tienen competiciones locales para elegir a los componentes de los equipos. Cada universidad puede mandar un máximo de equipos de 3 personas a la fase regional que puede variar en dependencia de la región. Las competiciones locales son opcionales y las organiza cada universidad como estime conveniente. Algunas universidades optan por seleccionar a los alumnos con notas más altas o a los que muestran más interés.

Los equipos de cada universidad participan en la fase regional, con otros equipos de universidades próximas geográficamente. Hay más de 30 regiones en todo el mundo. Algunas regiones agrupan distintos países (por ejemplo la SWERC incluye a España, Portugal, Francia y otros países europeos), otras son un solo país (la región de Brasil) y otras son sólo parte un país (Estados Unidos está dividido en varias regiones). Los mejor clasificados en cada competición regional participarán en la final mundial. Cada región envía a la final un cierto número de equipos, no pudiendo haber más de un equipo de una misma universidad.

La final mundial se celebra cada año en una ciudad distinta, y congrega a los equipos ganadores de todas las competiciones regionales.

Lista de competiciones regionales 
Regiones de Europa y Rusia:
 Suroeste (SWERC): esta región comprende España, Portugal, Francia, Italia, Suiza y el oeste de Austria.
 Noroeste (NWERC)
 Central (CERC)
 Sureste (SEERC)
 Noreste (NEERC)
Regiones de África:
 África y Arabia (AARPC)
 Sudáfrica (SAfrica)
Regiones de Asia:
 Beijing
 Coimbatore (Coim)
 Kanpur (Kolkata)
 Daca
 Kaohsiun
 Manila
 Seúl
 Teerán
 Xian
 Shanghái
 Yokohama
 Hanói
Regiones de Oceanía:
 Pacífico sur (SPacific)
Regiones de América Latina:
 México y Centroamérica (CAmerica)
 Caribe
 Brasil 
 Suramérica Norte 
 Suramérica Sur
Regiones de Norteamérica:
 Pacific Northwest (PacNW)
 North Central (NCNA)
 East Central (ECNA)
 Northeastern (NENA)
 Rocky Mountain (RM)
 Mid-Central (MCUSA)
 Greater New York (GNY)
 Southern California (Scal)
 South Central (SCUSA)
 Southeast USA (SEUSA)
 Mid-Atlantic (MAUSA)

Ganadores 

2019 - Universidad Estatal de Moscú, Rusia
2018 - Universidad Estatal de Moscú, Rusia
2017 - Universidad ITMO, Rusia
 2016 - Universidad Estatal de San Petersburgo, Rusia
 2015 - Universidad ITMO, Rusia
 2014 - Universidad Estatal de San Petersburgo, Rusia
 2013 - Universidad ITMO, Rusia
 2012 - Universidad ITMO, Rusia
 2011 - Universidad de Zhejiang, China
 2010 - Universidad de Shanghái Jiao Tong, China
 2009 - Universidad ITMO, Rusia
 2008 - Universidad ITMO, Rusia
 2007 - Universidad de Varsovia, Polonia
 2006 - Universidad Estatal de Sarátov, Rusia
 2005 - Universidad de Shanghái Jiao Tong, China
 2004 - Universidad ITMO, Rusia
 2003 - Universidad de Varsovia, Polonia
 2002 - Universidad de Shanghái Jiao Tong, China
 2001 - Universidad Estatal de San Petersburgo, Rusia
 2000 - Universidad Estatal de San Petersburgo, Rusia
 1999 - Universidad de Waterloo, Canadá
 1998 - Universidad Carlos, República checa
 1997 - Harvey Mudd College, Estados Unidos
 1996 - Universidad de California, Berkeley, Estados Unidos
 1995 - Universidad de Friburgo, Friburgo, Alemania
 1994 - Universidad de Waterloo, Canadá
 1993 - Universidad de Harvard, Estados Unidos
 1992 - Universidad de Melbourne, Australia
 1991 - Universidad de Stanford, Estados Unidos
 1990 - Universidad de Otago, Nueva Zelanda
 1989 - Universidad de California, Los Ángeles, Estados Unidos
 1988 - Instituto Tecnológico de California, Estados Unidos
 1987 - Universidad de Stanford, Estados Unidos
 1986 - Instituto Tecnológico de California, Estados Unidos
 1985 - Universidad de Stanford, Estados Unidos
 1984 - Universidad Johns Hopkins, Estados Unidos
 1983 - Universidad de Nebraska, Estados Unidos
 1982 - universidad Baylor, Estados Unidos
 1981 - Universidad de Misuri-Rolla, Estados Unidos
 1980 - Universidad Washington en San Luis, Estados Unidos
 1979 - Universidad Washington en San Luis, Estados Unidos
 1978 - Instituto Tecnológico de Massachusetts, Estados Unidos
 1977 - Universidad Estatal de Míchigan, Estados Unidos

Véase también 
 Olimpiada Internacional de Informática

Enlaces 
 Sitio oficial

Jueces en Línea 
 ACM-ICPC Live Archive Around the World
 Universidad de Valladolid Online Judge
 Caribbean Online Judge
 Ural State University Online Judge
 Tianjin University Online Judge
 Saratov State University Online Judge
 Sphere Online Judge
 A2 Online Judge
 Codeforces
 CS Academy
 MIPT Online Judge
 Peking University Online Judge
 Jilin University Online Judge
 Zhejiang University Online Judge
 Harbin Institute of Technology Online Judge
 Tianjin University Online Judge
 Fuzhou University Online Judge
 Online Problems Solving System
 University of Dhaka Online Judge & Contest Training 
 Moscow State University Virtual Contest System

Referencias 

Competiciones de informática
Programación
Concursos
Association for Computing Machinery