Competencia internacional universitaria de programación

Competición Internacional Universitaria ACM de Programación
Información sobre la plantilla
con sede en Estados Unidos
Logo ACM-ICPC.jpg
Logotipo oficial
País sede:Bandera de los Estados Unidos de América Estados Unidos
Ciudad(es):Texas
Sitio web del evento
ACM, IBM


La Competición Internacional Universitaria ACM de Programación (en inglés ACM International Collegiate Programming Contest, abreviado ACM-ICPC o simplemente ICPC) es una competición anual de programación y algoritmica entre universidades de todo el mundo patrocinada por International Business Machines (IBM). En la competición prima el trabajo en equipo, el análisis de problemas y el desarrollo rápido de software. ICPC es un evento organizado por la Association for Computing Machinery (ACM).

Historia

La ACM-ICPC es una competición que se realizó por primera vez en la Universidad A&M de Texas en 1970. La misma 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, competieron principalmente equipos de Estados Unidos y Canadá. La sede central está ubicada en la Universidad de Baylor desde 1989, las competiciones regionales se ubican en universidades de todo el mundo, bajo el auspicio de la ACM y la colaboración de grandes empresas de la industria informática. La ACM-ICPC ha ido aumentando en número de participantes y países y ahora es una competición mundial con equipos de 84 países (en 2005).

Desde 1997 el principal patrocinador es IBM y la participación en la competición se ha incrementado de un 10 a un 20% cada año. En 1997 participaron 840 equipos de 560 universidades. En 2005, 5606 equipos de 1737 universidades.

Reglas de la competición

El ICPC es una competición por equipos. Las reglas actuales estipulan que cada equipo ha de tener como máximo 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 5 horas para resolver entre 8 y 10 problemas (lo normal es 8 para las competiciones regionales y 10 para la final). Se deben programar las soluciones con C, C++ o Java. 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 sólo ordenador. Es necesario un buen entendimiento entre los miembros de un equipo para conseguir la victoria.

Competiciones

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 2 equipos de 3 personas a la fase regional, si desean participar con un tercer equipo deben solicitarlo a la organización que determinará si les conceden permiso o no. 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 sólo país (la región de Brasil) y otras son sólo parte un país (Estados Unidos está dividido en varias regiones). Los mejores 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 puede haber más de un equipo de una misma universidad.

La final mundial se celebra cada año en un lugar distinto y congrega a los equipos ganadores de todas las competiciones regionales.

Regiones

Europa y Rusia:

África:

Oceanía:

América Latina:

Norteamérica:

  • Pasífico Noreste
  • Norte Central
  • Este Central
  • Montaña Rocky
  • Medio Centro
  • Sureste de California
  • Sur Central

Jueces en Línea

Un juez en línea es un sistema, por lo general web, que permite juzgar programas de computación que intenten solucionar tareas propuestas. Estos sistemas pueden compilar y ejecutar códigos fuente, y ponerlos a prueba con los juegos de datos definidos para la tarea seleccionada. Las posibles soluciones se ejecutan con restricciones tales como: límite de tiempo de ejecución, límite de memoria, tamaño de código fuente, restricciones de seguridad. La salida de cada programa enviado por el usuario es capturada por el sistema y comparada contra la salida que se tiene de la tarea en cuestión o será evalúa da por un evaluador externo. Existen muchos jueces en líneas entre los que destacan:

Véase también

Referencias

Fuente