Torneo Argentino de Programación (2012)
Torneo Argentino de Programación (2012)
Torneo Argentino de Programación (2012)
SESIÓN DE COMPETENCIA
29 de septiembre de 2012
Entrada
1. La entrada se debe leer de la entrada estándar (standard input).
2. La entrada contiene varios casos de prueba. Cada caso se describe utilizando una
cantidad de lı́neas que depende del problema.
3. Cuando una lı́nea de datos contiene varios valores, éstos se separan utilizando exac-
tamente un espacio entre ellos. Ningún otro espacio aparece en la entrada. No hay
lı́neas en blanco.
4. No hay letras con tildes, acentos, diéresis, ni otros signos ortográficos (ñ, Ã, é, Ì, ô,
Ü, ç, etcétera).
5. Todas las lı́neas, incluyendo la última, tienen la marca usual de fin de lı́nea.
6. El final de la entrada se indica con una lı́nea que contiene ciertos valores que de-
penden del problema. Dicha lı́nea no se debe procesar como un caso de prueba.
Salida
1. La salida se debe escribir en la salida estándar (standard output).
3. Cuando una lı́nea de resultados contiene varios valores, éstos se deben separar uti-
lizando exactamente un espacio entre ellos. Ningún otro espacio debe aparecer en
la salida. No debe haber lı́neas en blanco.
4. No debe haber letras con tildes, acentos, diéresis, ni otros signos ortográficos (ñ, Ã,
é, Ì, ô, Ü, ç, etcétera).
5. Todas las lı́neas, incluyendo la última, deben tener la marca usual de fin de lı́nea.
Dado el estado inicial del juego, determinar si es posible ganar, es decir, si existe una
sucesión de jugadas válidas luego de las cuales todas las cajas quedan vacı́as.
Entrada
Cada caso de prueba se describe utilizando dos lı́neas. La primera lı́nea contiene un entero
N que indica la cantidad de cajas (1 ≤ N ≤ 500). La segunda lı́nea contiene N enteros
Pi que representan las cantidades de piedras que hay en las cajas al comienzo del juego,
desde la caja 1 hasta la caja N (0 ≤ Pi ≤ 500 para i = 1, 2, . . . , N ). Al menos una caja
no está vacı́a, es decir, existe i entre 1 y N tal que Pi 6= 0. El final de la entrada se indica
con una lı́nea que contiene el número −1.
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo un carácter que
representa si es posible ganar o no el juego. Si es posible ganar el juego el carácter debe
ser la letra “S” mayúscula; caso contrario el carácter debe ser la letra “N” mayúscula.
Entrada
Cada caso de prueba se describe utilizando una lı́nea. La lı́nea contiene un entero N que
indica la cantidad total de bailes que debe haber en el evento (1 ≤ N ≤ 104 ). El final de
la entrada se indica con una lı́nea que contiene el número −1.
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo un entero que
representa la cantidad de formas distintas en que es posible elegir el número de invitados
de cada reino para que se realicen N bailes respetando las restricciones mencionadas.
Entrada
Cada caso de prueba se describe utilizando una lı́nea. La lı́nea contiene tres enteros D,
H y B, y una cadena L. Los valores D y H indican los extremos del intervalo [D, H]
a estudiar (1 ≤ D ≤ H ≤ 1016 ). El valor B es la base mencionada (2 ≤ B ≤ 10).
La cadena L = L0 L1 · · · LB−1 tiene exactamente B caracteres y describe al conjunto C
también mencionado; el carácter Li es la letra “S” mayúscula cuando i ∈ C, y la letra “N”
mayúscula en caso contrario (i = 0, 1, . . . , B − 1). El conjunto C no es vacı́o, es decir, al
menos un carácter de L es “S”. El final de la entrada se indica con una lı́nea que contiene
tres veces el número −1 y un asterisco (“*”).
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo un entero que
representa la cantidad de números canteros (respecto de B y C) que son mayores o
iguales que D y menores o iguales que H.
Entrada
Cada caso de prueba se describe utilizando tres lı́neas. La primera lı́nea contiene un entero
N que indica la cantidad de jugadores en cada uno de los dos equipos (1 ≤ N ≤ 104 ). La
segunda lı́nea contiene los apellidos de los N jugadores de la selección Sub-18. La tercera
lı́nea contiene los apellidos de los N jugadores de la selección Sub-21. Cada apellido es una
cadena no vacı́a de a lo sumo 100 caracteres formada únicamente por letras mayúsculas.
En cada caso de prueba la cantidad total de letras en los 2N apellidos es a lo sumo 105 ,
y dos o más jugadores del mismo o de diferentes equipos pueden tener el mismo apellido.
El final de la entrada se indica con una lı́nea que contiene el número −1.
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo un entero que
representa la máxima cantidad total de letras que se pueden imprimir en un conjunto de
N camisetas que sean válidas para ser usadas por los dos equipos.
Torneo Argentino de Programación — ACM–ICPC 2012 5
Entrada
Cada caso de prueba se describe utilizando dos lı́neas. La primera lı́nea contiene dos
enteros N y H que indican respectivamente la cantidad de fichas de dominó en la hilera,
y la altura de cada una de las fichas (3 ≤ N ≤ 1000, 1 ≤ H ≤ 50). La segunda lı́nea
contiene N −1 enteros Di que representan las distancias entre pares de fichas consecutivas
de la hilera, en el orden dado por la hilera (1 ≤ Di ≤ 100 para i = 1, 2, . . . , N − 1). El
final de la entrada se indica con una lı́nea que contiene dos veces el número −1.
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo un entero que
representa la mı́nima cantidad de fichas que es necesario desplazar dentro de la hilera
para que la distancia entre fichas consecutivas sea menor o igual que H, sin desplazar la
primera ni la última ficha. Si es imposible lograrlo imprimir el número −1.
Entrada
Cada caso de prueba se describe utilizando dos lı́neas. La primera lı́nea contiene un entero
N que indica la cantidad de competidores (2 ≤ N ≤ 9). Los competidores son identifi-
cados por enteros diferentes entre 1 y N . El competidor 1 es Florencia. La segunda lı́nea
contiene N −1 cadenas no vacı́as Li de a lo sumo 100 caracteres cada una (i = 2, 3, . . . , N ).
La cadena Li está formada únicamente por dı́gitos entre 1 y N , excepto el dı́gito i, y re-
presenta la lista de rivales del competidor i en orden cronológico. El competidor 1 aparece
al menos una vez en alguna de las listas. En cada caso de prueba existe una única lista
de rivales para el competidor 1 que es compatible con las listas de rivales dadas. El final
de la entrada se indica con una lı́nea que contiene el número −1.
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo una cadena que
representa la única lista de rivales del competidor 1 (Florencia) que es compatible con las
listas de rivales de los otros competidores. Los rivales en la lista que se imprima deben
aparecen en orden cronológico.
Una cadena de ADN producible es una cadena de ADN que GigaFarma puede producir.
En la práctica es una secuencia no vacı́a de porciones que la empresa puede sintetizar, sin
conexiones adicionales de una a otra. Cada porción es una secuencia de bases y uniones,
conteniendo al menos una unión, pero sin uniones iniciales, finales, ni consecutivas. Cada
porción tiene un costo que depende de la dificultad para producirla, y cada cadena de
ADN producible tiene un costo de producción que es la suma de los costos de cada una de
sus porciones. En el ejemplo que aparece a continuación podemos ver a la izquierda una
posible lista de porciones y sus costos; a la derecha aparecen algunas cadenas de ADN
producible que pueden formarse a partir de ellas, con sus costos de producción asociados.
Observar que puede existir más de una manera de formar algunas cadenas de ADN
producible. Tal es el caso de “como-como-les” en el ejemplo, que puede obtenerse a partir
de las porciones “como-co” y “mo-les” con costo de producción 7, o usando simplemente
la porción “como-como-les” con costo de producción 12. Cuando existe más de una
manera de sintetizar cierta cadena de ADN producible, GigaFarma siempre lo hace de
alguna manera que tenga costo de producción mı́nimo.
El conjunto de cadenas de ADN alienı́gena es infinito, lo mismo que el conjunto de cadenas
de ADN producible. Pero GigaFarma no está interesada directamente en ninguno de esos
Torneo Argentino de Programación — ACM–ICPC 2012 9
Entrada
Cada caso de prueba se describe utilizando varias lı́neas. La primera lı́nea contiene dos
enteros G y P que representan respectivamente la cantidad de genes y de porciones
(1 ≤ G, P ≤ 100). Cada una de las G lı́neas siguientes describe un gen distinto mediante
una cadena S y un entero V ; la cadena S tiene entre 1 y 10 caracteres, y está formada
únicamente por letras minúsculas que representan las bases del gen; el entero V indica el
valor del gen (1 ≤ V ≤ 1000). Cada una de las P lı́neas siguientes describe una porción
distinta mediante una cadena T y un entero C; la cadena T tiene entre 1 y 30 caracteres,
y está formada únicamente por letras minúsculas y guiones medios (“-”) que representan
respectivamente las bases y las uniones; esta cadena contiene al menos un guión, pero no
tiene guiones iniciales, finales, ni consecutivos; el entero C indica el costo de la porción
(1 ≤ C ≤ 1000). En cada caso de prueba los genes son todos diferentes, y las porciones
son todas diferentes. El final de la entrada se indica con una lı́nea que contiene dos veces
el número −1.
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo un entero que
representa la máxima ganancia neta positiva que GigaFarma puede obtener por una
cadena de ADN alienı́gena y producible. Si ninguna ganancia neta es positiva imprimir el
valor 0. Si la ganancia neta puede ser arbitrariamente grande imprimir un asterisco (“*”).
Torneo Argentino de Programación — ACM–ICPC 2012 10
3
BB
2 B
AA B @@
1 A B @
A AB @
A AB @ x
1 2 3 4 5 6 7
Entrada
Cada caso de prueba se describe utilizando varias lı́neas. La primera lı́nea contiene un
entero N que indica la cantidad de montañas (1 ≤ N ≤ 1000). Cada una de las N lı́neas
siguientes describe una montaña distinta utilizando tres enteros I, D y H que representan
respectivamente la coordenada en el eje X del extremo izquierdo de la base, lo mismo
para el extremo derecho, y la altura (1 ≤ I, D, H ≤ 105 , I < D). En cada caso de prueba
no hay dos montañas exactamente iguales (que coincidan en los tres valores I, D y H).
El final de la entrada se indica con una lı́nea que contiene el número −1.
Torneo Argentino de Programación — ACM–ICPC 2012 12
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo un racional que
representa el área del perfil montañoso. Redondear el resultado al racional más cercano
con 2 dı́gitos decimales. En caso de empates, redondear hacia arriba. Siempre utilizar
exactamente 2 dı́gitos luego del punto decimal, incluso si eso significara terminar con un
cero.
Problema I – Incobrable
A Ignacio e Inés les gusta mucho la ciencia. Por suerte viven en Nlogonia, donde como
todos sabemos, hay N museos de ciencias. Tanto Ignacio como Inés tienen los próximos
N sábados libres, de modo que armaron un cronograma para visitar un museo de ciencias
diferente cada uno de esos dı́as.
Ignacio es bastante tacaño, por lo que todos los sábados le dice a Inés que no trajo plata
para pagar la entrada al museo, y le pide que ella pague por él. Inés siempre paga la
entrada de Ignacio, y como lo conoce bien, sabe que si luego ella no le reclama el dinero,
él nunca se lo va a devolver. Inés también sabe que cuando ella le reclama dinero a Ignacio,
él únicamente acepta pagarle si la deuda es múltiplo de 100, ya que de lo contrario Ignacio
argumenta que no tiene cambio para pagar y no le paga nada. Ası́ las cosas, cada domingo
después de ir a un museo, si la deuda acumulada es múltiplo de 100, Inés va a casa de
Ignacio y le reclama el dinero. Como él no tiene excusa posible, paga sin protestar. Esto
no le gusta para nada, pero se consuela pensando que si luego de visitar todos los museos
la deuda acumulada no es múltiplo de 100, Inés no le va a reclamar esa parte.
Inés necesita que le digan cuántas veces va a ir a casa de Ignacio a cobrarle la deuda.
Para poder calcular esto, ella les puede decir los precios de las entradas a los N museos
de ciencias de Nlogonia, en el orden en que ella e Ignacio los van a visitar.
Entrada
Cada caso de prueba se describe utilizando dos lı́neas. La primera lı́nea contiene un
entero N que indica la cantidad de museos de ciencias que hay en Nlogonia (1 ≤ N ≤
100). La segunda lı́nea contiene N enteros Pi que representan los precios de las entradas
a los diferentes museos en el orden en que van a ser visitados (1 ≤ Pi ≤ 100 para
i = 1, 2, . . . , N ). El final de la entrada se indica con una lı́nea que contiene el número −1.
Salida
Para cada caso de prueba, imprimir en la salida una lı́nea conteniendo un entero que
representa la cantidad de veces que Inés va a ir a casa de Ignacio a cobrarle la deuda.