Sunteți pe pagina 1din 3

Universidad Simón Bolívar

Departamento de Computación y Tecnología de la Información


Guías de Entrenamiento para Maratones de Programación al estilo ACMICPC.

Guía de Entrenamiento:
( Principiantes
)

Esta guía está pensada para servir como un apoyo para aquellos que deseen entrenar y par-
ticipar en maratones de programación al estilo de ACMICPC, Google Code Jam, etc. En esta
guía no habrá problemas resueltos, sino enlaces a problemas interesantes que deberían tratar de
resolver ustedes mismos para medir el nivel en el que se encuentran. Cada guía tendrá 100 puntos
repartidos en varios problemas, valuados según su dicultad. Es recomendable que no avancen a
la siguiente guía hasta obtener al menos 80 puntos en la actual.

Esta guía es la primera que deberían intentar resolver. Está orientada a aquellos que aún no
han participado en su primer maratón, o que deseen practicar problemas estilo adhoc, que no
requieren de una técnica en particular (las cuales se tocarán en guías posteriores).

1 ¾Donde comenzar?

Los problemas a resolver serán del juez virtual SPOJ, por lo que lo primero que hay que hacer
es ingresar a la página: www.spoj.pl y crear una cuenta (si no la tiene ya).

SPOJ es un juez virtual, que toma soluciones para problemas de programación y emite un
veredicto sobre si es correcta o no. Entre los posibles veredictos más comunes se encuentran:

Accepted: La solución al problema es correcta.

Wrong Answer: La solución del problema no es correcta.

Time Limit Exceeded: La solución del problema tomó mas tiempo ejecutándose que el tiempo
límite para el problema.

Compilation Error: La solución del problema no compiló (posiblemente se seleccionó mal el


Lenguaje en las opciones de envío.)

Run Time Error: La solución del problema abortó con un error.

Existen otros posibles resultados, sin embargo estos son los más comunes. La entrada y salida
para los problemas es tomada por la entrada/salida estándar y no hace falta leer toda la entrada
antes de comenzar a imprimir la salida pues, a pesar de que la consola los muestra juntos, la
entrada y la salida corresponden a destinos diferentes.

1
Una vez creada la cuenta, llega la hora de resolver nuestro primer problema:

Problema: Life, the Universe, and Everything


Código: TEST
a)
Enlace: www.spoj.pl/problems/TEST/
Valor: 5 puntos

¾Pero en que Lenguaje lo resolvemos? SPOJ permite muchos diferentes lenguajes de progra-
mación, sin embargo deberemos resolver los problemas exclusivamente en Java o C/C++ (ya que
son los lenguajes aceptados en ACMICPC). Aunque es recomendable que uno conozca muy bien
uno de estos lenguajes, no se puede ignorar el otro. Cada Lenguaje de programación tiene sus
ventajas y desventajas que hay que saber manejar. Para saber un poco más sobre esto, les re-
comiendo esta entrada de blog: throwingcodes.blogspot.com/2010/10/escoge-tu-bien-arma.html.

Para este problema en particular, debe dar una solución tanto en Java como en C/C++ (uno
solo de entre C y C++), para considerar ganados los puntos del problema. Para el resto de los
problemas de la guía el lenguaje es libre, aún entre Java o C/C++, pero basta con resolverlo en
uno solo de ellos (a menos que se especique lo contrario).

2 Problemas propuestos:

Problema: Adding Reversed Numbers


Código: ADDREV
b)
Enlace: www.spoj.pl/problems/ADDREV/
Valor: 5 puntos
Problema: Hello Kitty
Código: HELLOKIT
c)
Enlace: www.spoj.pl/problems/HELLOKIT/
Valor: 5 puntos
Problema: He is oside!
Código: OFFSIDE
d)
Enlace: www.spoj.pl/problems/OFFSIDE/
Valor: 5 puntos
Problema: Candy I
Código: CANDY
e)
Enlace: www.spoj.pl/problems/CANDY/
Valor: 5 puntos
Problema: Number Steps
Código: NSTEPS
f)
Enlace: www.spoj.pl/problems/NSTEPS/
Valor: 5 puntos
Problema: Hangover
Código: HANGOVER
g)
Enlace: www.spoj.pl/problems/HANGOVER/
Valor: 5 puntos

2
Problema: Draw Mountains
Código: DRAWM
h)
Enlace: www.spoj.pl/problems/DRAWM/
Valor: 5 puntos

Problema: Triple Fat Ladies


Código: EIGHTS
i)
Enlace: www.spoj.pl/problems/EIGHTS/
Valor: 5 puntos

Problema: Bullshit Bingo


Código: BINGO
j)
Enlace: www.spoj.pl/problems/BINGO/
Valor: 10 puntos

Problema: Count On Cantor


Código: CANTON
k)
Enlace: www.spoj.pl/problems/CANTON/
Valor: 10 puntos

Problema: Cylinder
Código: CYLINDER
l)
Enlace: www.spoj.pl/problems/CYLINDER/
Valor: 10 puntos

Problema: Java vs C++


Código: JAVAC
m)
Enlace: www.spoj.pl/problems/JAVAC/
Valor: 10 puntos

Problema: Uncle Jack


Código: UJ
n)
Enlace: www.spoj.pl/problems/UJ/
Valor: Java: 5 puntos, C/C++: 10 puntos

3 ¾Donde consigo más información?

En la web hay montones de tutoriales para aprender Java, C y C++. Sin embargo, las referencias
obligadas son el API para Java: docs.oracle.com/javase/6/docs/api y la referencia de C++:
en.cppreference.com/w, que tiene la documentación para todas las clases y elementos del lenguaje.

Sobre los problemas, es preferible intentar resolverlos por cuenta propia. Sin embargo, está
disponible el foro de SPOJ para resolver dudas puntuales sobre los mismos o sobre el juez en sí:
www.spoj.pl/forum.

Mi dirección de correo electrónico es rmonascal@ldc.usb.ve. Cualquier cosa, estoy a la orden


para dudas o sugerencias con estas guías. También tengo un blog sobre el tema, pueden visitarlo
aquí: throwingcodes.blogspot.com. ½Mucho éxito!

Ricardo Monascal / 2012

S-ar putea să vă placă și