Upload
berthin
View
135
Download
1
Tags:
Embed Size (px)
Citation preview
Universidad Nacional de SanAntonio Abad del Cusco
5to-CusContest
PROBLEM SET
Sabado 19 de Octubre del 2013
Este conjunto de problemas contiene 8 problemas
Organizado por : ACM-Chapter Cusco
Auspiciadores :
Cusco - Peru
5to-CusContest UNSAAC
Problema AHace unos dıas, Yajirobe (un estudiante de Computacion) se encontro con Karin(viejo
amigo de Yajirobe) y empezaron a conversar, en ello, Yajirobe le comento algo que le tenıa
pensativo durante mucho tiempo.
Pienso que (Yajirobe) soy bueno entendiendo nuevas tecnologıas y usandolas
en soluciones a diversos tipos de problemas, al menos eso es lo que pienso.
Pero, creo que cuando me enfrento a problemas un poco mas complejos, mi
logica empieza a fallar. Yo pienso que necesito mas practica para mejorar
esa falencia que tengo, pero nadie esta dispuesto a brindarme su tiempo y
ayudarme.
Karin, de la manera mas simple posible me comento un poco de como habıa empezado
en la programacion y como es que su logica se desarrollo. Luego de un largo rato de
conversacion, el se propuso brindarle su apoyo. La idea de Karin era darle un reto que
implique usar la logica y razonamiento para poder responder una serie de preguntas que
el formularıa.
El problema es que Karin ahora anda muy ocupado con sus asuntos de trabajo, puesto
que llego un muchachito llamado Goku para ser entrenado. Ası que, muy amablemente
te pide por favor que lo ayudes porque sabe del potencial de Yajirobe (Karin piensa que
solo se necesita que Yajirobe gane un poco de confianza). Buscando juegos logicos por
internet, se topo con el siguiente puzzle:
Tenemos 5 casas de cinco colores diferentes y en cada una de ellas vive una
persona de una nacionalidad diferente. Cada uno de los duenos bebe una bebida
diferente, fuma una marca de cigarrillos diferente y tiene una mascota diferente.
Contamos con las siguientes claves:
El britanico vive en la casa roja.
El sueco tiene un perro.
El danes toma te.
La casa verde esta a la izquierda de la blanca.
El dueno de la casa verde toma cafe.
La persona que fuma Pall Mall tiene un pajaro.
El dueno de la casa amarilla fuma Dunhill.
El que vive en la casa del centro toma leche.
2
5to-CusContest UNSAAC
El noruego vive en la primera casa.
La persona que fuma Brends vive junto a la que tiene un gato.
La persona que tiene un caballo vive junto a la que fuma Dunhill.
El que fuma Bluemasters bebe cerveza.
El aleman fuma prince.
El noruego vive junto a la casa azul.
El que fuma Brends tiene un vecino que toma agua.
El puzzle parece muy interesante, porque se necesita paciencia para resolverlo. Por eso,
Karin formulara una serie de preguntas(con respecto al puzzle anterior) para proponerlas
a Yajirobe, pero Karin necesita saber las respuestas y de acuerdo a ello ayudar a su viejo
amigo.
Tu tarea es simple, responder a las preguntas de Karin.
Entrada
El archivo de entrada contiene varios casos de prueba. La primera lınea de cada
caso de prueba contiene un entero N indicando, respectivamente, el numero de casos
de preguntas que deberas responder (1 ≤ N ≤ 20). Las siguientes lıneas contienen una
cadena de caracteres XYZ compuesta por caracteres en minusculas la cual indicara que
se formulo una de las siguientes preguntas:
“¿Quien vive en la XYZ casa?”
“¿Quien toma XYZ?”
“¿Quien vive a la derecha de la casa de color XYZ?”
“¿Quien vive a la izquierda del que tiene un XYZ como mascota?”
“¿Cual es la nacionalidad de quien gusta de fumar XYZ?”
Como te habras dado cuenta, Karin no quiere que te compliques la vida, ası que solo
formulo 5 preguntas. Debes de suponer que todas las preguntas estan bien formuladas y
XYZ tomara solo los posibles valores para que la pregunta este bien formulada.
3
5to-CusContest UNSAAC
Salida
Para cada paso de prueba de la entrada imprimir una lınea conteniendo la respuesta
en minusculas, sin tildes.
Ejemplo de Entrada Ejemplo de salida para la entrada
3 noruego
primera danes
te aleman
prince
4
5to-CusContest UNSAAC
Problema BEn las clases de Estructuras de Datos, como es de saberse, los proyectos que se dejan
normalmente se desarrollan de manera grupal para que de alguna forma se logre motivar
a los estudiantes a trabajar y compartir ideas, lo cual ayuda en el proceso de aprendizaje
y refuerza aspectos de la vida profesional. Hace muy poco, el docente encargado del curso,
mientras ensenaba la estructura de datos llamado Heap de Fibonacci (usado en una
variante del algoritmo Dijsktra donde la tarea es buscar la ruta mınima entre 2 vertices
de un grafo conexo y acıclico) decidio dejar a sus alumnos como tarea la implementacion
de dicha estructura. Como el trabajo es grupal, el profesor quiere restringir el modo de
como se forman normalmente los grupos (que es por un maximo numero de integrantes
por grupo) a lo siguiente: La suma de las edades de los integrantes de un grupo no debe
de ser mayor a un valor K. El problema es que el profesor quiere saber cuantos grupos
como mınimo se pueden formar para un valor dado de K y de acuerdo a ello distribuir
su tiempo para revisar los trabajos. Si K es muy grande, quiza la mitad del salon pueda
formar parte de solo un grupo!, pero si K es muy pequeno, es posible que cada grupo
este conformado por solo un estudiante. Aunque el calculo del valor K se puede hacer a
mano, resulta algo tedioso en caso de que el docente piense en futuros trabajos que sigan
la misma metodologıa.
Lamentablemente el docente se encuentra muy ocupado preparando una charla sobre
Red-Black Tree, y no tiene mucho tiempo para disenar un algoritmo que le ayude en la
busqueda del valor K, ası que tienes que ayudar al docente. Se te dara la descripcion de
las edades de los alumnos de la clase de Estructuras de Datos junto con un valor K, y tu
tarea es formar el mınimo numero de grupos posibles que cumplan con la condicion antes
expuesta. Con esto ayudaras al docente a elegir el valor de K segun el mejor criterio que
el vea por conveniente. Ya para otra oportunidad tu tarea sera elegir el valor K optimo.
Entrada
El archivo de entrada contiene varios casos de prueba. La primera lınea de cada caso
de prueba contiene dos enteros N y K, donde N es el numero de alumnos que llevan el
curso de Estructuras de Datos, y K es el valor maximo que puede resultar la suma de
las edades de cada grupo (1 ≤ N ≤ 20, max1≤i≤N
Ei ≤ K ≤N∑i=1
Ei). Los siguientes Ei enteros
(1 ≤ i ≤ N , 15 ≤ Ei ≤ 35) describiran las edades de los N estudiantes.
La entrada termina cuando N = 0.
5
5to-CusContest UNSAAC
Salida
Para cada paso de prueba de la entrada imprimir una lınea:
“Caso #T: M”(sin comillas)
donde T representa el numero de caso de prueba, y M el mınimo numero de grupos que
se puede formar con el valor de K. Ver el ejemplo de salida para mas detalles.
Ejemplo de Entrada Ejemplo de salida para la entrada
5 35 Caso #1: 3
15 20 21 18 15 Caso #2: 4
10 70 Caso #3: 2
19 21 22 20
22 20
21 23 24 22
4 47
16 18 17 20
0 111
6
5to-CusContest UNSAAC
Problema CWarnoldo esta estudiando para el Exame Nacional para Ingresso na Pos-Graduacao
em Computacao (POSCOMP). El examen esta dividido en 3 areas, Matematica, Funda-
mentos de Computacion y por ultimo el area de Tecnologıas. Normalmente, Warnoldo
agarra pruebas pasadas y se pone a resolver problemas de Matematica.
Una vez, mientras estudiaba, se topo con una pregunta que le llamo la atencion, la
cual decıa: Determinar cuantas cadenas binarias de longitud N = 7 (strings
conformados por 0s y 1s) se pueden formar, con la condicion de que cada
cadena tenga al menos un par consecutivo de ceros.
Ahora nuestro amigo Warnoldo quiere ponerse a practicar con ese problema hacien-
do variar el valor de N . Luego de resolver unos cuantos ejercicios pide tu ayuda para
comprobar si los valores que el hallo son correctos o no.
Entrada
El archivo de entrada contiene varios casos de prueba. Cada caso de prueba contiene
dos enteros N y R, donde N es la longitud de los string binarios que debes de formar
cumpliendo la condicion antes expuesta y R es la respuesta de Warnoldo (1 ≤ N ≤30, 1 ≤ R ≤ 230). El programa termina cuando N = 0 y R = 0.
Salida
Para cada paso de prueba de la entrada imprimir una lınea indicando “YES” si la
respuesta de Warnoldo es correcta, o “NO” en caso contrario (ambas respuestas sin comil-
las).
Ejemplo de Entrada Ejemplo de salida para la entrada
7 94 YES
1 1 NO
12 3718 NO
20 1030865 YES
0 0
7
5to-CusContest UNSAAC
Problema DEn la decada de 1990, habıa un rumor que estaba relacionado con las palabras (ca-
denas de caracteres). Se decıa que una palabra era hecha por El grupo 3am(un grupo de
personas, cuya identidad real nadie conocıa, dedicado a revelar secretos de la humanidad)
si y solamente si todos los caracteres estaban ordenados de manera creciente o decreciente.
Es decir, dada una palabra w = c1c2 . . . cn de longitud n, w era una palabra hecha por El
grupo 3am si se cumplıa cualquiera de las 2 condiciones: ∀i ∈ [1, n− 1] : ci < ci+1 o bien
∀i ∈ [1, n− 1] : ci > ci+1.
Entrada
El archivo de entrada contiene varios casos de prueba. La primera lınea de cada caso
de prueba contiene una palabra w (0 < |w| ≤ 103). w sera una palabra conformada por
unicamente letras del alfabeto ingles [a− z] ∪ [A− Z]. El programa debe de terminar
cuando se lea una cadena conformada por una asterisco (*). Ese caso de prueba no debe
de ser procesado.
Salida
Para cada paso de prueba de la entrada imprimir una lınea indicando “YES” si la
palabra fue creada por El grupo 3am, o “NO” en caso contrario (ambas respuestas sin
comillas).
Ejemplo de Entrada Ejemplo de salida para la entrada
informatica NO
algoritmo NO
RoMa YES
CusContest NO
Flor YES
*
8
5to-CusContest UNSAAC
Problema EEn un pueblo italiano (muy lejano) al pie de las montanas vive nuestro amigo Marco
en una humilde morada. Se levanta muy temprano para ayudar a su buena mama. Pero
un dıa la tristeza llega hasta su corazon. Mama tiene que partir cruzando el mar a otro
paıs.
Marco estaba muy preocupado por su mama. Un dıa, de regreso a casa luego de la
escuela, su mono Amedio(conocido tambien como Peppino) muy travieso se escapo de
Marco y fue a parar cerca de un grupo de personas las cuales estaban escuchando atenta-
mente a un hombre. Marco, en seguida fue donde su monito y escucho decir que el hombre
ofrecıa un premio en efectivo muy grande a quien resuelva un pequeno jueguito. Marco
penso que el podrıa resolver el problema que le dieran, y gasto todo sus ahorros para
inscribirse en el juego de aquel hombre. Lamentablemente, Marco se inscribio sin saber
que debıa de hacer!
El hombre al recibir el dinero recien le conto de que trataba el juego. Ahora Marco
esta muy pensativo, el hombre le dijo que manana a la misma hora Marco tendra que
resolver el jueguito y tiene un dıa para entrenar y armar una estrategia. Por la manana
siguiente, Marco se encontro con su gran amiga Fiorina y le explico lo sucedido ası como
la descripcion del juego:
Tienes una imagen dividida en 9 cuadros de 3 colores (rojo, azul y amarillo), como
una matriz de 3×3 (ver Figura 1). Cada cuadro puede cambiar de color, pero unicamente
el rojo cambia a amarillo, el amarillo a azul, y el azul a rojo. Este proceso es algo cıclico,
es decir que si los cambios son C1→ C2→ C3 el siguiente cambio sera C3→ C1. Dentro
del juego esta permitido un tipo de movimiento que consiste en tocar un cuadrado y este,
automaticamente, se cambia de color al igual que sus adyacentes a excepcion del cuadrado
central. El cuadrado central es un caso muy especial, porque solo puede ser cambiado por
movimientos que impliquen tocar el mismo cuadrado central. El objetivo del juego es
tratar de llegar de una configuracion dada a la configuracion inicial (ver Figura 1a).
Ambos tienen menos de 4 horas para que el tiempo se acabe. Tu labor de hoy sera ayu-
dar a Marco y Fiorina a practicar con ese jueguito. Marco te dara una posible configu-
racion de la imagen y quiere saber si es posible llegar a la configuracion inicial.
9
5to-CusContest UNSAAC
(a)
(b) (c) (d)
Figura 1: a) Configuracion inicial. b) Configuracion luego de haber presionado el cuadradode la posicion (1, 1). Como se nota, los unicos cuadrados que cambian son (1, 1), y susadyacentes (1, 2), (2, 1) c) Configuracion luego de haber presionado el cuadrado de laposicion (2, 1). Los unicos cuadrados que cambian son (1, 1), (2, 1) y (3, 1), el cuadradode la posicion (2, 2) no cambia (de acuerdo a la especificacion del juego). d) Configuracion(especial) luego de haber presionado el cuadrado central. Cambia el mismo cuadrado(2, 2)y sus adyacentes (1, 2), (2, 1), (2, 3), (3, 2).
Entrada
El archivo de entrada contiene varios casos de prueba. La primera lınea de cada caso
de prueba contiene un entero N (0 < N ≤ 100). Los siguientes N casos contendran la
configuracion de la imagen.
Cada configuracion estara dada como una matriz de 3 × 3, donde el elemento de la
posicion (i, j) puede tomar los valores de R, Y, B (rojo, amarillo y azul).
Salida
Para cada paso de prueba de la entrada imprimir una lınea indicando “YES” si la
palabra fue creada por el grupo secreto C, o “NO” en caso contrario (ambas respuestas
sin comillas).
10
5to-CusContest UNSAAC
Ejemplo de Entrada Ejemplo de salida para la entrada
4 YES
RYR NO
YBY NO
RYR YES
RRR
RRR
RRR
RYY
YBB
RYB
RRY
YBR
RYY
Notese que para el cuarto caso, uno de los posibles movimientos que Marco puede realizar para
llevar la imagen a la configuracion inicial serıa de la siguiente forma:
Presionar el cuadrado de la posicion (1, 1) una vez.
Presionar el cuadrado de la posicion (1, 2) dos veces.
Presionar el cuadrado de la posicion (2, 1) una vez.
Presionar el cuadrado de la posicion (2, 3) una vez.
Presionar el cuadrado de la posicion (3, 3) dos veces.
El primer caso es trivial, Marco no necesita realizar ningun movimiento.
11
5to-CusContest UNSAAC
Problema Fsource: SPOJ (Peru) judge
Una composicion de un numero n es una secuencia ordenada de numeros que suman
n, por ejemplo para n = 4 tenemos 8 composiciones:
4 = 4
4 = 3 + 1
4 = 2 + 2
4 = 2 + 1 + 1
4 = 1 + 3
4 = 1 + 2 + 1
4 = 1 + 1 + 2
4 = 1 + 1 + 1 + 1
Una parte de una composicion es uno de los sumandos de la composicion, para n = 4,
el total de partes en todas sus composiciones es 20. Dado un entero n (1 ≤ n ≤ 109)
calcule el numero de partes modulo 109 + 7.
Entrada
La entrada inicia con un entero T (T ≤ 40). Siguen T lıneas, cada una con un entero
n (1 ≤ n ≤ 109).
Salida
Una lınea con la respuesta por cada caso.
Ejemplo de Entrada Ejemplo de salida para la entrada
4 1
1 3
2 8
3 20
4
12
5to-CusContest UNSAAC
Problema Gsource: UTP-judge
Fabian es un estudiante de ciencias de la computacion a quien algunas de sus clases
le causan un poco de somnolencia. Dada la dificultad que esta situacion representa para
el, Fabian ha estado en busqueda de una solucion para este problema y con el paso del
tiempo ha descubierto una actividad que le ayuda a mantenerse despierto en estas clases,
dicha actividad consiste en dibujar algun tipo de figura sobre una hoja de papel.
En este preciso momento Fabian se encuentra en alguna de esas clases que le adorme-
cen y ha decidido aplicar esta estrategia que descubrio, inspirado en una conversacion
que tuvo con uno de sus profesores acerca de la curva de Koch, el ha creado su propio
fractal que se construye como sigue:
La Figura comienza con una linea de longitud L.
Dicha linea se divide en tres secciones de longitud L3, se remueve la seccion central
y se ponen tres segmentos adicionales de longitud igual a L3
de tal forma que esos
segmentos formarıan un cuadrado con el segmento que acabamos de remover.
Se repite el paso inmediatamente anterior para cada uno de los segmentos de la
nueva figura, el numero de veces que se desee.
Para hacer la figura anteriormente descrita Fabian dispone de un lapicero de ultima
generacion que compro en la tienda UTP (Utensilios Tipograficos de Precision), la princi-
pal caracterıstica de este lapicero es que le permite a la persona que lo usa, saber a traves
de un pequeno tablero electronico la longitud en centımetros que podrıa rayar todavıa
con el lapicero.
Dada la longitud L en centımetros de la recta inicial de la figura (iteracion 0) y la
Longitud S que Fabian puede rayar con el lapicero, tambien en centımetros, Fabian quiere
saber de antemano cual es el numero N de la iteracion de su fractal, tal que la iteracion
N + 1 no es posible dibujarla con la tinta que tiene el lapicero.
Es importante aclarar que para que Fabian dibuje la iteracion numero N no tuvo que
haber dibujado las N − 1 iteraciones anteriores.
Entrada
La entrada consiste de varios casos de prueba. La primera lınea contiene un unico
numero T (1 ≤ T ≤ 500) indicando el numero de casos de prueba que deben ser proce-
sados, las siguientes T lıneas contienen dos numeros enteros L y S (1 ≤ L ≤ 10, 1 ≤S ≤ 1000, L ≤ S) separados por un espacio, representando respectivamente la longitud
inicial de la linea en la iteracion 0 y la longitud que puede rayar el lapicero.
13
5to-CusContest UNSAAC
(a) Iteracion 1 (b) Iteracion 2 (c) Iteracion 3
(d) Iteracion 4
(e) Iteracion 5
Figura 2: 5 primeras iteraciones de la figura descrita por Fabian.
Salida
Para cada caso de prueba escribe una unica linea con el entero N , el numero de it-
eracion mas grande que Fabian podrıa dibujar con los valores dados.
Ejemplo de Entrada Ejemplo de salida para la entrada
5 0
1 1 1
1 2 4
2 16 12
1 765 13
1 766
14
5to-CusContest UNSAAC
Problema HUn grupo de amigos, estudiantes de Algorıtmica, decidieron no entrar a clases y fueron
a pasar el rato con un juego un poco raro. Al inicio, se escogıa a una persona la cual debıa
de escribir en una hoja de papel 2 letras del alfabeto, nadie podıa ver las letras que esa
persona habıa escrito porque luego todos se sentaban formando un cırculo y cada jugador
tenıa que decir cualquier nombre que se le ocurriera hasta que alguien mencione uno que
contenga las 2 letras antes elegidas, esa persona serıa declarada como la perdedora.
Como todos quieren jugar, te escogieron como el juez y tu tarea sera escribir en una
hoja 2 letras y decir quien es el perdedor. Como tu consciencia no te deja en paz por no
haber entrado a clases, no estas muy atento, por lo que decides usar tu celular para grabar
todo lo que digan de tal forma que pasado un cierto tiempo paras el juego, escuchas la
grabacion y senalas al perdedor en caso que haya.
Entrada
El archivo de entrada contiene varios casos de prueba. La primera lınea de cada caso
contiene dos numeros N y M seguido por 2 letras diferentes del alfabeto ingles separadas
por un espacio en blanco (1 ≤ N ≤M, 1 ≤M ≤ 50). N indica el numero de jugadores.
A continuacion se te proporcionara M lıneas conteniendo los nombres que los ju-
gadores han mencionado. La longitud maxima de cada nombre no sera mayor a 50.
El archivo de entrada termina cuando N = 0 y M = 0.
Salida
Para cada paso de prueba de la entrada imprimir una lınea:
“Caso #T: R”(sin comillas)
donde T representa el numero de caso de prueba, y R indica el indice del jugador que ha
perdido. En caso de que hayan varios perdedores, elegir a la persona que haya perdido
mas antes, y si no hay perdedores imprimir “-1” (sin comillas).
15