Anda di halaman 1dari 16

acm International Collegiate

Programming Contest 2014 event


sponsor

Batalla de Programadores ITESO 2014


13 de Septiembre de 2014

Cuaderno de Problemas

Informaci
on General

Este cuaderno contiene 11 problemas; las paginas estan numeradas de 1 a 15, sin contar esta pagina de portada.
Verifica que tu cuaderno este completo.

A) Sobre la entrada
1) La entrada de tu programa debe ser leda desde entrada est andar.
2) La entrada est a compuesta de un u nico caso de prueba, descrito en un numero de lneas que depende del
problema.
3) Quando una lnea de entrada contiene varios valores, estos son separados por un u
nico espacio en blanco; la
entrada no contiene ning un espacio en blanco adicional.
4) Cada lnea, incluyendo la u
ltima, contiene el caracter final-de-lnea.
5) El final de la entrada coincide con el final de archivo.

B) Sobre la salida
1) La salida de su programa debe ser escrita en salida estandar.
2) Cuando una lnea de salida contiene varios valores, estos deben separarse por un u
nico espacio en blanco; la
salida no debe conter ningun outro espacio en branco.
3) Cada lnea, incluyendo la u
ltima, debe contener el caracter final-de-lnea.
Batalla de Programadores ITESO ACM ICPC 2014 1

Problema A
Vuelta
Archivo: volta.[c|cpp|java]

En los deportes de motocicleta es muy com un que el piloto lder en una carrera, en alg
un momento,
rebase al ultimo piloto. El lder, en este momento lleva una vuelta mas que el u ltimo piloto, quien se
vuelve rezagado. En esta tarea, dado el tiempo que le lleva al piloto mas rapido, y al piloto m as lento,
completar una vuelta, debes determinar en cual vuelta el piloto mas lento se rezaga. Debes considerar
que, al inicio, ambos est an lado a lado en la lnea de inicio del circuito al empezar la vuelta n umero
1 (la primera vuelta de la carrera); ademas que la siguiente vuelta comienza justo despues de que el
lder cruza la lnea de inicio.
Entrada
La entrada consiste en dos enteros X y Y (1 X < Y 10000), los tiempos, en segundos, que le
toma al piloto m
as r
apido y al piloto mas lento, respectivamente, completar una vuelta.
Salida
Tu programa debe de mostrar un entero: la vuelta en el que el piloto mas lento es rezagado.
Ejemplos

Entrada Salida

1 10 2

Entrada Salida

4 8 2

Entrada Salida

5 7 4

Entrada Salida

6875 7109 31
Batalla de Programadores ITESO ACM ICPC 2014 2

Problema B
Bajaja barajeada
Archivo: baralho.[c|cpp|java]

Un paquete de barajas contiene un n umero par 2n de cartas a1 , a2 , . . . , a2n , todas diferentes (a1 <
a2 < < a2n ). El paquete inicialmente esta ordenado, esto quiere decir que la primera carta en el
paquete es a1 , la segunda es a2 , y as sucesivamente, as la u
ltima carta del paquete es a2n .
El repartidor entonces realiza el procedimiento de barajeo repetidamente. El barajeo consiste en
dos pasos:

1. el paquete se divide a la mitad;

2. las cartas en las dos mitades son intercaladas de manera que la secuencia original al inicio de
paso 1 es x1 , x2 , . . . , x2n , y al final del paso 2 la secuencia final es xn+1 , x1 , xn+2 , x2 , . . . , x2n , xn .

Dado el numero de cartas en el paquete, escribe un programa que determine cuantas veces debe
de realizarse el procedimiento de barajeo para que el paquete vuelva a estar ordenado.
Entrada
nica lnea de entrada contiene un entero par p (2 p 2 105 ), donde p es el n
La u umero de cartas
en el paquete (nota que el valor p corresponde al valor 2n en la descripcion anterior).
Salida
Tu programa debe producir una u nica lnea, conteniendo un entero, el n
umero mnimo de veces que
debe realizarse el barajeo para que el paquete quede ordenado nuevamente.
Ejemplos

Entrada Salida

4 4

Entrada Salida

6 3

Entrada Salida

2 2

Entrada Salida

100002 100002
Batalla de Programadores ITESO ACM ICPC 2014 3

Problema C
Confederacion
Archivo: confederacao.[c|cpp|java]

La Confederacion Gal achica est


a planeando una reforma administrativa para administrar mejor
sus recursos. Para eso, la Confederacion dividio todo el espacio en regiones. Para definir las regiones,
inicialmente se especific
o un conjunto de planos, y las regiones se definieron por los cortes que hicieron
estos planos. Nota que algunas regiones no tienen limites pero puede haber regiones con limites. El
conjunto de planos se escogieron de manera que ning un corte intercepte la orbita de un planeta y de
esta manera cada planeta se mueve solamente dentro de una region durante su orbita (quiere decir
que un planeta dentro de una regi on nunca cruzara al plano de otra region).
Tu tarea es determinar, dadas las ecuaciones de los planos y la posiciones de los planetas, cu antos
planetas existen dentro de la region con el mayor n umero de planetas (en otras palabras, cu al es el
numero meximo de planetas dentro de cualquier region).
Entrada
La primera lnea de la entrada contiene dos enteros m (1 m 500) and n (1 n 10000), y
n (1 n 10000), indicando el n umero de planos y el namero de planetas respectivamente. Cada
una de las siguientes m lneas contiene cuatro enteros a, b, c y d (10000 a, b, c, d 10000), los
coeficientes y el termino libre de la ecuacion ax + by + cz = d que define cada plano. Cda una de
las siguientes n lneas contienen tres enteros x, y, y z (10000 x, y, z 10000), representando la
posici
un (x, y, z) de un planeta.
Salida
Tu programa debe producir una u nica lomea que contenga un entero, el n
umero de planetas en la
region que contiene el mayor n
umero de planetas.
Ejemplos

Entrada Salida

2 5 3
1 0 0 1
2 0 0 8
0 1 0
2 2 2
3 3 3
5 5 5
2 18 4
Batalla de Programadores ITESO ACM ICPC 2014 4

Entrada Salida

4 8 5
0 0 1 1
1 0 1 2
-1 1 1 3
-1 -1 1 3
0 0 5
0 0 4
0 0 -2
1 0 5
40 19 104
13 26 84
89 -45 18
3 1 0
Batalla de Programadores ITESO ACM ICPC 2014 5

Problema D
Senorita Lombriz
Archivo: minhoca.[c|cpp|java]

Se
norita Lombriz se enoja cuando oye a la gente decir que las lombrices son animales palndromos,
ya que no podemos distinguir la cabeza de la cola. Esa es una gran mentira!
Se
norita Lombriz vive en una bonita cueva, compuesta por camaras y t uneles. Cada tunel conecta
dos diferente c amaras y pueden usarse en ambos sentidos. Un ciclo en la cueva es una secuencia de
camaras s1 , s2 , . . . , sn , sn+1 = s1 , donde si 6= si+1 y (si , si+1 ) es un t
unel para 1 i n. La cueva
de la Se
norita Lombriz puede tener ciclos pero cada camara es parte solamente un ciclo. Los t uneles
y camaras son estrechas, as que si el cuerpo de la Se norita Lombriz esta ocupando un t unel o una
camara, no hay espacio para que la Se norita Lombriz vuelva a entrar al t unel o a la camara.
Algunas c amaras de la cueva tienen acceso desde la superficie. Se norita Lombriz tiene un mapa que
describe la cueva, informando la longitud de cada t ubel y los pares de camaras que estan conectadas
por un tanel. Se norita Lombriz tambien es consciente y conoce su longitud exacta.
Se
norita Lombriz quiere saber, de las camaras que tienen acceso a la superficie, si es posible entrar
a la cueva por esa c amara, caminar la distancia m unima dentro de la cueva y dejar la cueva por la
misma camara, movindose siempre hacia adelante, nunca para atras. Ay udala a resolver su problema!
Entrada
La primera lnea contiene dos enteros S (2 S 104 ) y T (1 T 2S) representando el n umero
de camaras y el n umero de tuneles en la cueva, respectivamente. Las camaras estan identificadas por
enteros desde 1 hasta S. Cada de los siguientes T lneas describen el t unel y contiene tres enteros
A, B, y C (1 A < B S; 1 C 100), donde A y B representan las camaras conectadas por el
t
unel y C representa la longitud del t unel. Ninguna camara esta conectada a mas de 100 camaras. La
siguiente lnea contiene un entero Q (1 Q 100), que indica el n umero de pruebas. Cada una de
las siguientes Q lneas describe una prueba y contiene dos entros X (1 X S) y M (1 M 105 ),
indicando la c amara que Se norita Lombriz quiere usar para entrar a la cueva y la longitud del cuerpo
de Senorita Lombriz, respectivamente. e
Salida
Cada prueba en la entrada de tu programa debe de producir una lmea que contenga un entero, la
longitud del camino m as corto que Se
norita Lombriz debe recorrer para entrar y salir de la cueva por
la camara indicada en la prueba, moviendose siempre para adelante, nunca para atras. Si no es posible
la lmea debe de contener el valor 1.
Batalla de Programadores ITESO ACM ICPC 2014 6

Ejemplos

Entrada Salida

4 4 47
1 2 12 23
2 3 10 -1
3 4 8
2 4 5
3
1 23
4 10
1 24

Entrada Salida

8 9 20
1 2 1 -1
2 3 1 16
3 4 1 71
2 5 10
5 6 25
2 6 20
3 7 9
7 8 3
3 8 4
4
1 10
4 60
8 5
7 55
Batalla de Programadores ITESO ACM ICPC 2014 7

Problema E
Ecologia
Archivo: ecologia.[c|cpp|java]

El reino de Polinomigonia recientemente aprobo una ley ecologica que obliga a todos los granjeros
en el reino a preservar el n
umero m aximo de arboles posibles en un un porcentaje fijo del area de la
granja. Adem as, para permitir a los animales salvajes moverse libremente, el area preservada debe de
estar conectada.
Todas las granjas en Polinomigonia son una cuadricula de N N cu- 31 12 7 1 14
adrados, de una hect area cada uno. La figura ilustra una granja de
N = 5. El area preservada debe cubrir exactamente M cuadrados. En 23 98 3 87 1
el ejemplo, M = 6. Estos cuadrados deben de estar conectados or- 5 31 8 2 99
togonalmente. Quiere decir que, debe ser posible desplazase entre dos
12 3 42 17 88
cuadrados preservados haciendo movimientos ortogonales entre ellos. El
area no preservada puede o no estar conectada. 120 2 7 5 7
Los granjeros conocen el numero de arboles dentro de cada cuadrado, y t
u debes de escribir un
programa que calcule el numero m aximo de arboles que pueden ser preservados en una area de M
cuadrados. En el ejemplo, es posible preservar 377 arboles!
Entrada
La primera lnea de entrada contiene dos enteros N y M (2 N 50, 1 M 10). Las siguientes
N lneas contiene, cada una, N enteros con valores entre 1 y 1000, representando el n
umero de erboles
en cada cuadrado en la granja.
Salida
Tu programa debe de mostrar una linea conteniendo un entero, el n
umero maximo de arboles que
pueden ser preservados, con las restricciones dadas.
Ejemplos

Entrada Salida

5 6 377
31 12 7 1 14
23 98 3 87 1
5 31 8 2 99
12 3 42 17 88
120 2 7 5 7

Entrada Salida

4 8 72
1 1 1 1
9 9 9 1
9 1 9 1
9 9 9 1
Batalla de Programadores ITESO ACM ICPC 2014 8

Problema F
Teletransporte
Archivo: teletransporte.[c|cpp|java]

La Confederaci on Galactica instal


o un nuevo sistema de teletransportacion en sus aeronaves. Cada
aeronave recibi o una cabina de treletransportacion, en la cual hay un panel con cuatro botones. Cada
boton esta identificado con una letra diferente A, B, C o D y con un n umero que indica la aeronave a
la cual el usuario sera instantaneamente transportado si se presiona su respectivo boton (como todo
mundo sabe, las aeronaves de la Confederacion estan identificadas por enteros desde 1 hasta N ).
Para usar el sistema, el usuario debe comprar un boleto por cada viaje que quiera hacer (un viaje
equivale a presionar un bot on). Nota que como el n umero de botones en el panel es menor al n umero
de aeronaves de la Confederaci on, el usuario necesitara comprar un boleto m ultiple de L viajes para
ir desde cualquier aeronave S a otra aeronave T .
Por ejemplo, usando las aeronaves en la siguiente figura, si el usuario de la cabina de la aeronave 3
presiona el boton B es transportado a la aeronave 2. Si el usuario tiene un boleto m ultiple y presiona
nuevamente el bot on B entonces es transportado a la aeronave 1.

1 2 2 2 2 1 3 2 2 2 3 1

A B C D A B C D A B C D

Nave 1 Nave 2 Nave 3

Tu tarea en este problema es, dada la aeronave de inicio S, la aeronave destino T , y el numero
de viajes L de un boleto, determinar el n
umero de diferentes secuencias de L botones que llevar
an al
usuario de la aeronave S a la aeronave T . Por ejemplo, usando las aeronaves de la figura anterior,
hay cuatro diferentes secuencias de L = 2 botones que llevaran al usuario de la aeronave S = 3 a la
aeronave T = 1: CD, DA, AB, y BB.
Entrada
La primera lnea de entrada contiene dos enteros N (1 N 100) y L (0 L < 230 ), indicando el
numero de aeronaves y el n umero de viajes disponibles en el boleto respectivamente. La segunda lnea
de entrada contiene dos enteros S y T (1 S, T N ), indicando la aeronave de inicio y la aeronave
de destino respectivamente. Cada una de las siguientes N lneas describen el panel de la cabina de la
aeronave. La i-nesima lnea (1 i N ) contiene cuatro enteros A, B, C and D (1 A, B, C, D N ),
que representan los numeros contenidos en los cuatros botones en la cabina de teletrasnportaci on de
la aeronave numero i.
Salida
Tu programa debe producir una sola lnea, que contenga un entero, que debe ser igual a r m odulo
104 , donde r es el n
umero de secuencias diferentes de L botones necesarios para llevar al usuario de la
aeronave S a la aeronave T .
Batalla de Programadores ITESO ACM ICPC 2014 9

Ejemplos

Entrada Salida

2 20 7776
1 1
2 2 2 2
1 1 1 1

Entrada Salida

2 29 0
1 1
2 2 2 2
1 1 1 1

Entrada Salida

2 0 1
1 1
2 2 2 2
1 1 1 1

Entrada Salida

2 0 0
1 2
2 2 2 2
1 1 1 1

Entrada Salida

3 2 4
3 1
1 2 2 2
2 1 3 2
2 2 3 1
Batalla de Programadores ITESO ACM ICPC 2014 10

Problema G
Letras
Archivo: letras.[c|cpp|java]

Los parques en la Ciudad de la L ogica son una cuadrcula de N N cuadrados (2 N 100),


donde cada cuadrado tiene una de las primeras 10 letras ASCII, abcdefghijABCDEFGHIJ, en may uscula
o minuscula. La gente de la Ciudad de la Logica orgullosamente siguen un solo camino consistente
para cruzar los parques. Por ejemplo, si pisan sobe una c min uscula, no se permiten pisar en una
C mayuscula despues. Para definir esto con mayor precision, un camino consistente es una secuecia
de cuadrados que satisfacen: cuadrados consecutivos son ortogonalmente adyacentes; no hay letras
que sean may uscula y min
uscula. Esto es, o la letra no esta en una secuencia, o esta u
nicamente en
minuscula, o est
aunicamente en may uscula.

DdaAaA D.....
CBAcca C.....
eEaeeE e.....
bBbabB b.bab.
DbDdDc DbD.D.
fFaAaC ....aC

Tu programa debe de ayudar a la gente de Ciudad de la Logica a encontrar la longitud del camino
consistente m as corto entre el cuadrado con coordenadas (1, 1), en la esquina superior izquierda, y
el cuadrado con coordenadas (N, N ), en la esquina inferior derecha. Para el parque en el ejemplo
anterior, el camino consistente m as corto tiene longitud de 13.
Entrada
La primera lnea de entrada con un entero N (2 N 100), el tama no el parque. Las siguiente N
lneas contiene, cada una, la secuencia de N letras, describiendo el parque.
Salida
Tu programa debe mostrar una lnea que contenga un entero, la longitud del camino consistente m as
corto. Si no hay un camino consistente, la salida debe de ser -1.
Your program must output one line containing one integer, the length of a shortest consistent path.
If there is no consistent path, output -1.
Ejemplos

Entrada Salida

6 13
DdaAaA
CBAcca
eEaeeE
bBbabB
DbDdDc
fFaAaC
Batalla de Programadores ITESO ACM ICPC 2014 11

Entrada Salida

7 -1
aAaaaaa
aAaaaAa
aAaaaAA
aaAaAaa
AaAaaAa
aaAAaAa
aaaaaAa
Batalla de Programadores ITESO ACM ICPC 2014 12

Problema H
Balonmano
Archivo: handebol.[c|cpp|java]

Frustrados y desilusionaos con los resultados de su equipo de f utbol, el S


uper Club Mexicano
(SCM) decidio invertir en el equipo de balonmano. Para poder calificar mejor a los jugadores, a los
entrenadores les gustara analizar su regularidad. Especficamente, les interesa saber cuantos jugadores
anotaron gol en todos los partidos.
Como el volumen de datos es muy grande, les gustara tener un programa en la computadla que
haga esta cuenta.
Entrada
La primera lnea de entrada contiene dos enteros N y M (1 N 100 and 1 M 100) indicando,
respectivamente, el numero de jugadores y el numero de partidos.Cada una de las siguientes N lineas
describe el rendimiento de un jugador: la i-nesima linea contiene M enteros Xj (0 Xj 100, para
1 j M ), dando el numero de goles que el i-nesimo jugador anot
u en cada partido.
Salida
Tu programa debe mostrar una lnea, conteniendo un entero, el n
umero de jugadores que anotaron
gin en todos los partidos!
Ejemplos

Entrada Salida

5 3 0
0 0 0
1 0 5
0 0 0
0 1 2
1 1 0

Entrada Salida

12 5 2
4 4 2 3 7
0 0 0 1 0
7 4 7 0 6
1 2 3 3 2
0 0 0 0 0
4 0 9 10 10
0 1 0 0 0
1 2 0 2 3
10 10 10 1 0
0 3 3 3 4
10 10 0 10 10
1 1 2 0 9
Batalla de Programadores ITESO ACM ICPC 2014 13

Problema I
RSA
Archivo: rsa.[c|cpp|java]

RSA es uno de los algoritmos criptograficos mas usados y es considerado como una de las alterna-
tivas mas seguras. Su operacion basica se describe a continuacion.
Se escogen dos numeros primos p y q y se calcula n = pq. Luego se calcula la funcion indicatriz
(n) = (p 1)(q 1) y se escoge un n umero entero e que satisface 1 < e < (n) de manera que
gcd((n), e) = 1. Finalmente, se calcula el entero d, el inverso multiplicativo de e modulo (n), es
decir, el entero d que satisface de 1 mod (n).
De esa manera se obtiene la llave p
ublica, que consiste en el par de enteros n y e, y la llave secreta,
que contiene los enteros n y d.
Para cifrar el mensaje m, con 0 < m < n, calculamos c = me mod n, y c es el mensaje cifrado.
Para descifrar un mensaje, es decir, para recuperar el mensaje original, es suficiente calcular m = cd
mod n. Nota que, para poder hacer el calculo, debes conocer la llave secreta; no es suficiente conocer
la llave p
ublica para descifrar el mensaje.
En este problema, tu tarea es romper la criptografa RSA.
Entrada
La unica lnea de entrada contiene tres enteros, n, e, y c, donde n, e, and c, where 15 n 109 ,
1 e < n y 1 c < n, tal que n y e forma la llave RSA p ublica descrita arriba, y c es el mensaje
cifrado con esa llave p
ublica.
Salida
Tu programa debe producir una sola lnea, con un entero m, 1 m < n, el mensaje original.
Ejemplos

Entrada Salida

1073 71 436 726

Entrada Salida

91 43 19 33
Batalla de Programadores ITESO ACM ICPC 2014 14

Problema J
Corte
Archivo: corte.[c|cpp|java]

Todo polgono convexo, con 2N vrtices, puede descomponerse en N 1 cuadrileteros al cortar


con N 2 lneas rectas entre ciertos pares de vertices. La figura de abajo muestra tres diferentes
descomposiciones del polgono de ejemplo con N = 5. El peso de la descomposicion es la suma de las
longitudes de sus N 2 cortes. Tu programa debe calcular la suma del peso de la descomposici on de
peso mnimo.

Entrada
La primera lnea de entrada contiene un entero N (2 N 100). Las siguientes 2N lneas contiene,
cada una, dos numeros reales X y Y (0 X, Y 10000), con precision de 4 decimales: las coordenadas
de los 2N puntos, en sentido contrario al reloj, del polgono convexo.
Salida
Tu programa debe sacar una lnea conteniendo un n umero real, con precision de 4 decimales. El
n
umero debe de ser el peso de la descomposicion con menor peso del polgono descrito.
Ejemplos

Entrada Salida

4 4519.6176
5715.7584 3278.6962
3870.5535 4086.7950
3823.2104 4080.7543
3574.4323 170.2905
4521.4796 144.9156
4984.6486 306.2896
5063.1061 347.1661
6099.9959 2095.9358

Entrada Salida

2 0.0000
6044.4737 2567.9978
5752.5635 3226.5140
5148.8242 3802.9292
4598.8042 4036.8000
Batalla de Programadores ITESO ACM ICPC 2014 15

Problema K
Pizza del Abuelo Pepe
Archivo: pizza.[c|cpp|java]

El Abuelo Pepe es famoso por sus pizzas. Son deliciosas y tienen la forma circular perfecta. El
Abuelo prepar o una pizza especial para la cena de hoy, y puso cierto n umero de olivas distribuidas al
azar en la pizza, pero todas exactamente en el borde de la pizza.
Tu problema es determinar, conociendo la circunferencia de la pizza, el n umero de olivas y la
posicion de cada una de las olivas, si es posible dividir la pizza en sectores circulares de exactamente
el mismo taja no, de tal manera que cada pedazo tenga una oliva.
La siguiente figura (a) muestra una pizza de circunferencia 12 con 3 olivas y una posible divisi on
en pedazos iguales: la figura (b) muestra una pizza con circunferencia 12 con 4 olivas que no puede
dividirse en pedazos iguales como se describio anteriormente. A pesar de ser deliciosas, las olivas son
muy peque nas, y su dimensi
on puede ser descartada cuando se calcula la division.
0 0
11 1 11 1

10 2 10 2

9 3 9 3

8 4 8 4

7 5 7 5
6 6

(a) (b)

Entrada
La primera lnea contiene dos enteros C (3 C 105 ) y N (3 N 104 , N C) indicando la
circunferencia de la pizza y el n
umero de olivas, respectivamente. El entero C es multiplo de N . La
segunda linea contiene N diferentes enteros Xi (0 X1 < X2 < . . . < XN < C), en orden creciente,
describiendo las posiciones de las olivas, dado como la longitud del arco circular, en sentido de las
manecillas del reloj, desde un punto fijo en la circunferencia.
Salida
Tu programa debe producir una sola lnea, contiendo una letra, que debe de ser S si es posible dividir
la pizza como se describe arriba, o N en otro caso.
Ejemplos

Entrada Salida

12 3 S
2 8 11

Entrada Salida

12 4 N
4 5 7 11

Anda mungkin juga menyukai