16
Universidad Nacional de San Antonio Abad del Cusco 5to-CusContest PROBLEM SET abado 19 de Octubre del 2013 Este conjunto de problemas contiene 8 problemas Organizado por : ACM-Chapter Cusco Auspiciadores : Cusco - Per´ u

5to CusContest (PS)

  • Upload
    berthin

  • View
    135

  • Download
    1

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

5to-CusContest UNSAAC

Ejemplo de Entrada Ejemplo de salida para la entrada

4 8 E O Caso #1: 1

Waldinho Caso #2: -1

Arturinho

Xavier

Joao

Robertinho

Caramelinho

Cecinho

Ronaldinho

3 5 E O

Juanico

Pablita

Fidel

Marianita

Crispin

0 0 A K

16