Está en la página 1de 48

Concurso de programaci on 2008

Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Arboles

Nivel 1

Decimos que un arbol binario est a balanceado si, para cada uno de sus nodos, la diferencia de altura de los sub arboles izquierdo y derecho es a lo sumo 1. Dada una altura ja n, se trata de obtener el n umero de arboles balanceados de altura n. En el ejemplo siguiente se muestra c omo calcularlo para altura n = 2.

+
n=0 n=1
Entrada

+
n=0 n=1 n=1 n=1

En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba se indica en una l nea la altura de los a rboles, 0 n 4. Salida Una l nea por cada uno de los casos de prueba indicando la soluci on. Ejemplo de entrada 2 0 1 Salida correspondiente al ejemplo 1 3

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Arboles.txt - Salida: cpeui08 Solucion Arboles.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

C rculos

Nivel 2

Dado un conjunto de c rculos con radios enteros y centros de coordenadas enteras, se trata de determinar para cada uno de ellos el n umero de c rculos que est an contenidos dentro de el. En el ejemplo siguiente se muestra una conguraci on posible de c rculos.

Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba se indica en una l nea el n umero n de c rculos (0 < n < 1000) y, en las siguientes n l neas, se describen los c rculos, uno en cada l nea, mediante tres enteros separados por un espacio que representan las coordenadas del centro x e y y el radio r respectivamente (0 < r < 50 y 50 < x, y < 50). Salida Por cada uno de los casos de prueba, n l neas en las que se indica el n umero de c rculos incluidos en el k esimo (1 k n) considerando el mismo orden dado en la entrada.

Ejemplo de entrada 2 3 0 2 1 10 0 1 3 4 4 8 12 12 14 15

0 0 1 7 0 3 1 4 6 1 6 2 3

3 2 1 2 1 4 4 1 2 1 1 4 2

Salida correspondiente al ejemplo 1 0 0 0 0 1 1 0 0 0 0 2 0 Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Circulos.txt - Salida: cpeui08 Solucion Circulos.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Waldorf

Nivel 2

Dada una tabla de letras de dimensiones m n y una lista de palabras, se trata de encontrar la posici on de las palabras en la tabla. Una palabra debe corresponder a una l nea recta e ininterrumpida de letras en la tabla. La coincidencia se puede producir en cualquiera de las ocho direcciones siguientes: horizontales (izquierda y derecha), verticales (arriba y abajo) o diagonales (izquierda-arriba, izquierda-abajo, derecha-arriba y derecha-abajo). Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba, en primer lugar, se indica en una l nea el tama no de la tabla, m y n (1 < m, n < 50): dos enteros separados por un espacio. Las siguientes m l neas contendr an n letras cada una, representadas mediante una palabra de n caracteres, indicando las las de la tabla. A continuaci on se indicar a en una l nea el n umero de palabras a buscar en la tabla, k (1 < k < 20). Finalmente, en las siguientes k l neas se indicar an las palabras que se deben buscar, una por l nea. Tanto la tabla como las palabras a buscar contendr an u nicamente letras min usculas, es decir, no incluir an espacios, ni signos de puntuaci on, ni caracteres no alfab eticos. Salida Para cada caso de prueba se escribir an k l neas indicando la posici on de cada una de las palabras. Para cada palabra se debe mostrar una pareja de enteros que representar a su ubicaci on en la tabla. Los enteros deben estar separados por un espacio. El primer entero corresponde a la la de la tabla donde aparece la primera letra de la palabra en cuesti on y el segundo entero corresponde a la columna. Si una palabra aparece m as de una vez en la tabla, se debe mostrar la soluci on lexicogr acamente m as peque na. Todas las palabras aparecer an, al menos, una vez en la tabla.

Ejemplo de entrada 2 8 11 abcdefghigg hebkwaldork ftyawaldorm ftsimrlqsrc byoarbedeyv klcbqwikomk strebgadhrb yuiqlxcnbjf 4 waldorf bambi betty dagbert 3 4 abcd efgh ijkl 2 kfa hg Salida correspondiente al ejemplo 2 2 1 7 3 2 5 3 2 8 3 4

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Waldorf.txt - Salida: cpeui08 Solucion Waldorf.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Superpiezas

Nivel 3

En un tablero de ajedrez de m las y n columnas, con m n, queremos colocar n superpiezas de ajedrez que pueden realizar los movimientos tanto de la reina como del caballo. Se trata de determinar de cu antas formas distintas se pueden colocar las n superpiezas en el tablero de manera que ninguna de ellas amenace a las dem as. El dibujo siguiente muestra las posibilidades de movimiento de una superpieza y una conguraci on v alida de superpiezas, en un tablero con m = 12 y n = 8.

Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba, se indican en una l nea las dimensiones del tablero (m y n) separados por un espacio, con las restricciones 1 n 8 y n m 12. Salida Una l nea por cada uno de los casos de prueba indicando la soluci on.

Ejemplo de entrada 2 6 7 3 3

Salida correspondiente al ejemplo 0 6 Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Superpiezas.txt - Salida: cpeui08 Solucion Superpiezas.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Ferrocarriles

Nivel 3

Ma nana por la ma nana, Andr es debe viajar para competir en un concurso de programaci on. Para no llegar tarde y ser descalicado, busca una combinaci on de trenes que le permita llegar lo m as pronto posible. Andr es nos ha pedido ayuda. Partiendo de una serie de horarios de trenes, debemos calcular cu al es la combinaci on de trenes que le permite llegar antes. Si hay varias que le permiten llegar a la misma hora, cualquiera de ellas se considerar a v alida. Afortunadamente, Andr es es tan r apido cambiando de tren que puede hacerlo instant aneamente, en tiempo cero! Entrada En la primera l nea se indica el n umero de casos de prueba. Cada caso consta de tres partes. La primera muestra todas las ciudades conectadas por el ferrocarril. Comienza con un n umero C en una l nea (1 < C 100), seguido de C l neas, con los nombres de las ciudades, uno en cada l nea. La segunda parte describe todos los trenes que funcionan ese d a. Comienza con un n umero T en una l nea (1 T 100), seguido de T descripciones de trenes. Cada una de ellas consta de una l nea con el n umero ti de paradas (1 < ti 100) y despu es ti l neas m as, que indican la hora (con formato hhmm) y la ciudad, separados por un espacio. Y la u ltima parte consta de tres l neas: la primera con la hora de inicio m as temprana que se permite, la segunda con el nombre de la ciudad de origen y la tercera con la ciudad de destino. Las ciudades de origen y destino son siempre diferentes. Salida Una l nea por cada uno de los casos de prueba. Si hay conexi on se indicar a la hora de llegada a la ciudad de destino, y si no la hay el texto sin conexi on.

Ejemplo de entrada 2 3 Aranjuez Legan es Madrid 3 2 0949 Aranjuez 1006 Legan es 2 1325 Aranjuez 1550 Madrid 2 1205 Legan es 1411 Madrid 0800 Aranjuez Madrid 2 Guadalajara Madrid 1 2 0100 Guadalajara 2300 Madrid 0800 Guadalajara Madrid Salida correspondiente al ejemplo 1411 sin conexi on Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Ferrocarriles.txt - Salida: cpeui08 Solucion Ferrocarriles.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Palabras

Nivel 4

Cambiar a una palabra a un paso consiste en transformar una palabra x en otra y , de forma que tanto x como y sean palabras existentes, y adem as sea posible transformar x en y mediante la adici on, eliminaci on o cambio de una sola letra. Las transformaciones dig dog dog do

son ejemplos de cambios a palabras a un paso. Una escalera de palabras a un paso es un secuencia de palabras en orden lexicogr aco w1 , w2 , . . . , wn de forma que las transformaciones de wi en wi+i consistan en cambios a una palabra a un paso para todo valor de i desde 1 hasta n 1. Partiendo de un diccionario dado, se debe calcular la longitud de la escalera de palabras a un paso m as larga posible. Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba, se indica en una l nea el n umero de palabras, n (n < 1000), y en las siguientes n l neas las palabras del diccionario, una en cada l nea, en letras min usculas y ordenadas lexicogr acamente. Ninguna palabra tendr a m as de 16 caracteres. Salida La salida consistir a en un entero por cada caso de prueba, indicando la longitud de la escalera de palabras a un paso m as larga posible.

Ejemplo de entrada 2 9 cat dig dog g n ne fog log wine 4 casa caso pasa peso Salida correspondiente al ejemplo 5 2 Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Palabras.txt - Salida: cpeui08 Solucion Palabras.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Hormiga

Entrenamiento 1

Nivel 1

Un d a, una hormiga llamada Alice lleg o a un tablero de ajedrez de dimensiones n n. Como quer a explorar todas las casillas del tablero, comenz o a caminar por el mismo partiendo de una de sus esquinas. Alice comenz o en la casilla (1, 1). En primer lugar dio un paso adelante, luego uno a la derecha, luego uno hacia atr as. Despu es, dio otro a la derecha, dos hacia delante y dos hacia la izquierda. Cada vez a nad a una nueva la y una nueva columna a la esquina que estaba explorando. Por ejemplo, en sus primeros 25 pasos hizo el siguiente recorrido, donde el n umero de cada casilla indica el orden en que la visit o: . . . . . . . . . . . . . . . ...

25 24 23 22 21 10 11 12 13 20 9 2 1 8 3 4 7 6 5 14 19 15 18 16 17

El octavo paso la coloc o en la casilla (2, 3), mientras que el paso n umero 20 lo hizo en la (5, 4). La tarea consiste en determinar su ubicaci on en un momento dado, asumiendo que el tablero de ajedrez es lo sucientemente grande como para admitir todos los movimientos. Entrada En la primera l nea se indica el n umero de casos de prueba. Cada caso de prueba se describe en una l nea, en la que se indica el n umero del paso de la hormiga, n, donde 1 < n < 2 109 . Salida Por cada caso prueba, escribir en una l nea los n umeros x e y que identican la casilla correspondiente al paso especicado en la entrada, separados por un espacio.

Ejemplo de entrada 3 8 20 25 Salida correspondiente al ejemplo 2 5 1 3 4 5

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Hormiga.txt - Salida: cpeui08 Solucion Hormiga.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

fmt

Entrenamiento 1

Nivel 2

El programa de UNIX fmt lee l neas de texto, las combina y las divide para crear un archivo de salida con l neas de una longitud lo m as cercana posible a 72 caracteres, sin superar nunca ese n umero. Las reglas para combinar y dividir las l neas son las siguientes: 1. Se puede comenzar una nueva l nea en cualquier lugar en que haya un espacio en la entrada. Cuando comienza una nueva l nea, los espacios en blanco al nal de la l nea anterior y al principio de la nueva son eliminados. 2. Un salto de l nea de la entrada se puede eliminar en la salida, salvo que: a ) se encuentre al nal de una l nea vac a o en blanco, o b ) est e seguido por otro salto de l nea o por un espacio. Cuando se elimina un salto de l nea, se sustituye por un espacio. 3. Al nal de las l neas de la salida no debe haber espacios. Supondremos que el texto de entrada no contiene ni palabras de longitud mayor que 72 ni caracteres de tabulaci on. Entrada Un documento de texto con a lo sumo 10000 caracteres. Salida El documento formateado seg un las reglas anteriores.

Ejemplo de entrada Unix fmt The unix fmt program reads lines of text, combining and breaking lines so as to create an output file with lines as close to without exceeding 72 characters long as possible. The rules for combining and breaking lines are as follows. 1. A new line may be started anywhere there is a space in the input. If a new line is started, there will be no trailing blanks at the end of the previous line or at the beginning of the new line. 2. A line break in the input may be eliminated in the output, provided it is not followed by a space or another line break. If a line break is eliminated, it is replaced by a space. Salida correspondiente al ejemplo Unix fmt The unix fmt program reads lines of text, combining and breaking lines so as to create an output file with lines as close to without exceeding 72 characters long as possible. The rules for combining and breaking lines are as follows. 1. A new line may be started anywhere there is a space in the input. If a new line is started, there will be no trailing blanks at the end of the previous line or at the beginning of the new line. 2. A line break in the input may be eliminated in the output, provided it is not followed by a space or another line break. If a line break is eliminated, it is replaced by a space.

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 fmt.txt - Salida: cpeui08 Solucion fmt.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Bicolorear

Entrenamiento 1

Nivel 2

Decimos que un grafo G es bicoloreable si es posible asignar un color a cada uno de sus v ertices, elegido de un conjunto de dos colores, de forma que v ertices adyacentes tienen asignados colores distintos. Dado un grafo conexo G, se trata de determinar si es bicoloreable o no. En el ejemplo siguiente se muestra un grafo que s lo es y otro que no lo es.

Bicoloreable

No bicoloreable

Entrada En la primera l nea se indica el n umero de casos de prueba. Cada caso de prueba se describe de la siguiente manera: en una l nea se indica el n umero n de v ertices del grafo, 1 < n 100, (cada v ertice se etiqueta con un n umero de 0 a n 1). A continuaci on, en n otra l nea se indica el n umero q de aristas del grafo, n 1 q 2 . Finalmente, en las q l neas siguientes se indican las aristas del grafo: una en cada l nea, descrita por un par de n umeros (v ertices) separados por un espacio. Salida Una l nea por cada uno de los casos de prueba indicando la soluci on: s o no.

Ejemplo de entrada 2 6 7 0 1 1 2 4 4 5 6 7 0 1 1 2 5 4 5

1 4 2 3 3 5 0

1 4 2 3 3 5 0

Salida correspondiente al ejemplo s no Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Bicolorear.txt - Salida: cpeui08 Solucion Bicolorear.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Escoba

Entrenamiento 2

Nivel 1

El juego de la escoba consiste en sumar 15 puntos con una de las cartas que el jugador tiene en la mano y las cartas que hay en la mesa. Inicialmente, cada jugador recibe tres cartas de la baraja espa nola, y en la mesa se ponen otras cuatro. El n umero de cartas de cada jugador va disminuyendo con cada ronda hasta quedarse sin ninguna, momento en que se reparten otras tres. Este proceso contin ua hasta que no queden cartas por repartir. Despu es de que se juegue la u ltima mano se proceder a a contar el total de puntos de cada jugador. El n umero de cartas en la mesa ir a variando seg un se vaya desarrollando el juego e incluso puede ser 0, si un jugador acaba de conseguir una escoba. Lo que nunca podr a ocurrir es que, con una combinaci on de cartas en la mesa, se pueda sumar 15. Las cartas con n umero tienen un valor igual a su n umero y las tres restantes valen 8 la sota, 9 el caballo y 10 el rey. Cuando un jugador completa 15 puntos, retira su carta utilizada y las que se han usado de la mesa para completar los 15 puntos. Pero, si no puede sumar 15 puntos, pone una de sus cartas en la mesa. Si se retiran todas las cartas de la mesa en una jugada, el jugador que lo haga gana directamente 1 punto. Esta jugada se llama hacer escoba. Si en la jugada un jugador se lleva el 7 de oros, obtiene directamente 1 punto. Adem as de esto, al nal de la partida, el jugador que tenga m as oros, sietes o cartas se llevar a 1 punto por cada uno de estos conceptos. Cada jugador debe tratar de conseguir los m aximos puntos posibles en cada jugada y, si no es posible conseguir ning un punto directo, jugar para que al nal pueda conseguir los m aximos puntos indirectos. El problema que se plantea es el siguiente: dado un conjunto de cartas en la mesa y tres cartas que un jugador tiene en la mano, determinar, de todas las posibles, cu al es la mejor jugada en ese momento. Entrada En la primera l nea se indica el n umero de casos de prueba. Cada caso de prueba se describe de la siguiente manera: un entero en n (0 n 8) en una l nea que indica el numero de cartas en la mesa y, para cada una de estas, una l nea con un car acter y un n umero separados por un espacio (palo-espacio-n umero) que codican la carta del siguiente modo: a ) Car acter: O (oros), C (copas), E (espadas) o B (bastos). b ) N umero: 1, 2, 3, 4, 5, 6, 7, 8 (sota), 9 (caballo) o 10 (rey). Finalmente hay tres l neas para codicar las cartas que el jugador tiene en la mano.

Salida La soluci on de cada uno de los casos de prueba se escribe del siguiente modo: un entero en una l nea indicando el n umero de cartas que juega el jugador (0 si no puede jugar ninguna) y, para cada una de estas, una l nea indicando la carta, empezando por la que juega de su mano. Ejemplo de entrada 2 3 C B E O B O 2 O B C B E

6 9 2 7 7 10 7 9 5 6 4

Salida correspondiente al ejemplo 3 O C E 0 7 6 2

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Escoba.txt - Salida: cpeui08 Solucion Escoba.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Zapatero

Entrenamiento 2

Nivel 2

Un zapatero tiene N pedidos de clientes que debe entregar. El zapatero suele tardar varios d as en completar cada pedido y, u nicamente, puede trabajar en uno concreto cada d a. Para el pedido i esimo, el entero Ti (1 Ti 1000) determina el n umero de d as que tardar a el zapatero en nalizar el trabajo. Pero la popularidad tiene un precio. Por cada d a de demora en el inicio del trabajo en el pedido i esimo, el zapatero se ha comprometido a pagar una compensaci on de Si (1 Si 10000) c entimos. Ayudemos al zapatero escribiendo un programa que determine el orden en que debe de realizar los pedidos, para que la penalizaci on total sea m nima. Entrada En la primera l nea se indica el n umero de casos de prueba. Cada caso de prueba se describe de la siguiente manera: una l nea con el n umero de pedidos N (1 N 1000) y, para cada uno de los pedidos, una l nea con el tiempo de nalizaci on y la compensaci on econ omica del pedido, separados por un espacio. Salida Para cada caso de prueba el programa deber a escribir la secuenciaci on de los pedidos (representados por su posici on en la entrada) que conlleva la menor compensaci on posible: un pedido (entero) en cada l nea. Si existen varias soluciones posibles, se considerar a la primera en orden lexicogr aco. Ejemplo de entrada 1 4 3 1 2 5

4 1000 2 5

Salida correspondiente al ejemplo 2 1 3 4

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Zapatero.txt - Salida: cpeui08 Solucion Zapatero.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Partici on

Entrenamiento 2

Nivel 3

Sea R una regi on limitada por una curva poligonal con lados horizontales y verticales, con v ertices de coordenadas enteras y descrita en sentido antihorario. Considerando particiones de R en rect angulos de altura 1, se trata de determinar el n umero de rect angulos de la partici on de cardinal m nimo. En el ejemplo siguiente la respuesta es 27.

Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba: en una l nea se indica el n umero de v ertices de la poligonal, n, y en las siguientes n l neas aparecen las coordenadas de los v ertices (dos enteros entre 0 y 100 separados por un espacio). Salida Una l nea por cada uno de los casos de prueba indicando la soluci on.

Ejemplo de entrada 2 10 0 2 2 3 3 2 2 1 1 0 12 0 2 2 4 4 3 3 5 5 1 1 0

0 0 1 1 2 2 3 3 1 1 0 0 2 2 1 1 0 0 4 4 3 3

Salida correspondiente al ejemplo 3 6

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Particion.txt - Salida: cpeui08 Solucion Particion.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Descifrador

Entrenamiento 3

Nivel 2

Un m etodo muy com un, y tambi en muy inseguro, de cifrar texto consiste en permutar las letras del alfabeto. En otras palabras, cada letra del alfabeto es sustituida sistem aticamente en el texto por otra. Para garantizar que el cifrado es reversible, nunca se sustituyen dos letras diferentes por la misma. El objetivo de este problema es descifrar varias l neas de texto cifradas, suponiendo que cada l nea usa un conjunto de sustituciones diferente, y que todas las palabras utilizadas en el texto descifrado provienen de un diccionario de palabras conocidas. Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba, en la primera l nea se indica el n umero de palabras del diccionario n y, en las siguientes n l neas, se incluyen las palabras del diccionario, una en cada l nea, en orden alfab etico. Finalmente se indica en una l nea el n umero de mensajes que hay que descifrar m y, en las siguientes m l neas, se incluyen dichos mensajes, uno en cada l nea. No puede haber m as de 1000 palabras en el diccionario. Ninguna palabra tendr a m as de 16 letras. Las l neas cifradas contienen u nicamente letras min usculas y espacios, y su longitud nunca supera los 80 caracteres. Salida Una l nea por cada uno de los mensajes que hay que descifrar. Si hay varias soluciones, cualquiera de ellas ser a v alida. Si no hay ninguna soluci on, se debe sustituir cada letra del alfabeto por un asterisco.

Ejemplo de entrada 2 6 and dick jane pu spot yertle 2 bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn xxxx yyy zzzz www yyyy aaa bbbb ccc dddddd 4 es la solucion valida 2 ex gfeyhcfz ag baecdx ex gfeyhcfz ag bxecdx Salida correspondiente al ejemplo dick and jane and pu and spot and yertle **** *** **** *** **** *** **** *** ****** ** ******** ** ****** la solucion es valida

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Descifrador.txt - Salida: cpeui08 Solucion Descifrador.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Areas

Entrenamiento 3

Nivel 3

Sea R una regi on limitada por una curva poligonal con lados horizontales y verticales, con v ertices de coordenadas enteras y descrita en sentido antihorario. Se trata de determinar el area de la regi on R. En el ejemplo siguiente la respuesta es 133.

Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba, en la primera l nea se indica el n umero de v ertices de la poligonal, n. En las siguientes n l neas aparecen las coordenadas de los v ertices: dos enteros entre 0 y 100 separados por un espacio. Salida Una l nea por cada uno de los casos de prueba indicando la soluci on.

Ejemplo de entrada 2 10 0 2 2 3 3 2 2 1 1 0 12 0 2 2 4 4 3 3 5 5 1 1 0

0 0 1 1 2 2 3 3 1 1 0 0 2 2 1 1 0 0 4 4 3 3

Salida correspondiente al ejemplo 5 16

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Areas.txt - Salida: cpeui08 Solucion Areas.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Piezas

Entrenamiento 3

Nivel 3

En un tablero de ajedrez de m las y n columnas, con m n, queremos colocar n piezas de ajedrez que pueden realizar los movimientos de la reina. Se trata de determinar de cu antas formas distintas se pueden colocar las n piezas en el tablero de manera que ninguna de ellas amenace a las dem as. El dibujo siguiente muestra las posibilidades de movimiento de una pieza y una conguraci on v alida de piezas, en un tablero con m = 12 y n = 8.

Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba, en la primera l nea se indican las dimensiones del tablero (n y m) separados por un espacio, con las restricciones 1 n 8 y n m 12. Salida Una l nea por cada uno de los casos de prueba indicando la soluci on. Ejemplo de entrada 2 3 3 3 4

Salida correspondiente al ejemplo 0 4

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Piezas.txt - Salida: cpeui08 Solucion Piezas.txt

Concurso de programaci on 2008


Escuela Universitaria de Inform atica Universidad Polit ecnica de Madrid

Sumas

Entrenamiento 3

Nivel 4

n(n 1) Cualquier conjunto de n enteros genera n umeros al sumar todas las posibles parejas. 2 La tarea consiste en encontrar los n enteros a partir del conjunto de sumas. Entrada En la primera l nea se indica el n umero de casos de prueba. Para cada caso de prueba, en n(n 1) siguientes, las la primera l nea se indica el entero n (con 2 < n < 10) y, en las 2 sumas de todas las parejas, una en cada l nea, en orden no descendente. Salida Por cada uno de los casos de prueba, los enteros que generan el conjunto de sumas en orden no descendente, uno en cada l nea. Si hay varias soluciones posibles, cualquiera de ellas ser a v alida. Si no hay soluci on, una l nea con el mensaje imposible. Ejemplo de entrada 2 3 1160 1269 1663 5 223 224 225 225 226 226 227 227 228 229

Salida correspondiente al ejemplo 383 777 886 111 112 113 114 115

Archivos de entrada y salida El archivo ejecutable deber a leer los datos del problema y escribir la soluci on en los siguientes archivos de entrada y salida respectivamente: - Entrada: cpeui08 Sumas.txt - Salida: cpeui08 Solucion Sumas.txt

1.- GRAMTICAS
Una gramtica es un mecanismo formal que, partiendo de un smbolo inicial y aplicando reglas de produccin, genera palabras compuestas por smbolos de un alfabeto. En nuestro caso, el smbolo inicial se llamar S, el alfabeto se compondr de letras minsculas y las reglas de produccin pueden ser de dos tipos: Mayscula ---> Minscula Mayscula Mayscula ---> Minscula Aplicar una regla de produccin consiste en sustituir la parte izquierda por la parte derecha de la misma. Cuando la cadena obtenida despus de aplicar un nmero indefinido de reglas se componga exclusivamente de letras minsculas, se habr conseguido generar una palabra. Por ejemplo, sea la gramtica compuesta por las siguientes cuatro reglas: S --> aS S --> aA A --> bA A --> b

A partir del smbolo inicial S, es posible generar la palabra aaaab aplicando secuencialmente tres veces la primera regla, una vez la segunda y una vez la cuarta, como se muestra a continuacin: S ==> aS ==> aaS ==> aaaS ==> aaaaA ==> aaaab Sin embargo, la palabra ba es imposible de generar con la gramtica anterior. Concretamente, esta gramtica es capaz de generar palabras {anbm | n, m >= 1}, es decir, cualquiera compuesta por una secuencia de smbolos a seguida de una secuencia de smbolos b. En cualquier momento es posible aplicar cualquier regla de produccin siempre que en la cadena se tenga la letra mayscula que coincida con la parte izquierda de la regla a aplicar. Se trata de realizar un programa que determine si una gramtica es capaz de generar o no una serie de palabras. Entrada En primer lugar aparecer una lnea con dos nmeros enteros n y m, donde n indicar el nmero de reglas de produccin que tiene la gramtica, mientras que m se refiere al nmero de palabras que habr que comprobar si son generadas por la gramtica. A continuacin, en cada lnea de la entrada figurar una regla de produccin, separando la parte izquierda de la parte derecha con un espacio. Finalmente aparecer una lnea con las palabras separadas por un blanco.

Se puede considerar que 1 <= n, m <= 10 y que la primera regla de produccin siempre tendr como parte izquierda el smbolo inicial S. Salida Una lnea con m smbolos separados por blancos. Cada smbolo podr ser un 0 un 1. Un 0 indicar que la correspondiente palabra no es generada por la gramtica y un 1 indicar que s que es generada. Ejemplo de entrada 4 7 S aS S aA A bA A b ab abab a bbaa abbb aaaab aba

Ejemplo de salida 1 0 0 0 1 1 0

2.- NMEROS ESCONDIDOS


Sea la cadena infinita de dgitos que se forma concatenando los enteros positivos escritos en decimal. Dicha cadena comenzara as: 123456789101112131415161718192021222324252627282930313233343536373839... Se trata de escribir un programa que, dado un nmero entero positivo, determine la primera posicin de dicho nmero en la cadena infinita. Por ejemplo, el nmero 31 aparece en la posicin 17 de la cadena. Aunque tambin aparezca en la posicin 51, debe darse como solucin la posicin primera. Entrada Un nmero positivo en cada lnea Salida Las correspondientes posiciones de los nmeros positivos, una en cada lnea. Ejemplo de entrada 31 192 Salida de ejemplo 17 28

3.- MULTIPLICACIN DE MATRICES


Dadas dos matrices A y B, tales que el nmero de columnas de la matriz A es igual al nmero de filas de la matriz B, es decir: y la multiplicacin de A por B, que se denota AB, AB o simplemente AB, est definida como:

donde cada elemento ci,j est definido por:

Grficamente, si

entonces

Se trata de realizar un programa que, leyendo de un fichero un nmero determinado de pares de nmeros enteros, cada uno de los cuales indica las filas y columnas de una matriz de dos dimensiones, determine el mayor nmero de matrices que pueden multiplicarse.

Entrada
La entrada de datos consistir en un fichero en el que se habrn grabado, uno por lnea, los pares de nmeros, con el formato (n,m), que representan las diferentes matrices que habra que multiplicar.

Salida
Como salida se mostrar el nmero de matrices que pueden multiplicarse y la secuencia de pares, en orden, que indicar la secuencia de multiplicaciones a realizar. En el caso de que haya ms de una solucin se mostrar la primera encontrada.

Entrada de ejemplo
(3,2) (8,3) (2,5) (4,7) (7,2)

Salida de ejemplo
3 (8,3) (3,2) (2,5)

4.- GRAFO Y SUBGRAFO


Dado un grafo conexo no dirigido formado por n nodos y una lista de m nodos pertenecientes al grafo, donde 1 <= m <= n, encontrar dentro del grafo el subgrafo conexo mnimo que contenga todos los nodos de la lista. Por ejemplo, sea el grafo

Definido como V:={1,2,3,4,5,6} E:={{1,2},{1,5},{2,3},{2,5},{3,4},{4,5},{4,6}} donde V es el conjunto de vrtices y E el conjunto de arcos o aristas del grafo. Y sea el subconjunto de vrtices V:={1,3,5}, el mnimo grafo que los conecta es V={1,2,3,5} E:={{1,2},{1,5},{2,3}} Entrada La entrada de datos consistir en un fichero en el que vendrn, en la primera lnea y separados por espacios en blanco, los vrtices del grafo. En la segunda lnea un nmero entero positivo n indicando el nmero de aristas del grafo. En las siguientes n lneas estn las aristas del grafo, una en cada lnea. En la ltima lnea, y separados por blancos, los vrtices del subgrafo. Salida La salida consistir en mostrar el conjunto de vrtices del grafo resultante en una lnea y, en la siguiente lnea, las aristas del mismo entre parntesis.

Entrada de ejemplo 1 2 3 4 5 6

7 1 1 2 2 3 4 4 1

2 5 3 5 4 5 6 3 5

Salida de ejemplo 1 2 3 5 (1, 2) (1, 5) (2, 3)

Concurso de programaci on de la EUI - 2009


Sesi on de entrenamiento - Aplicaci on Noviembre de 2009

Introducci on a la busqueda de patrones

ltimos a En Inform atica la b usqueda de patrones ha experimentado un creciente inter es en los u nos. Dicho inter es est a motivado por las numerosas aplicaciones pr acticas, entre las que destaca sin duda alguna las de Bioinform atica. La b usqueda de patrones en grandes bases de datos de amino acidos o prote nas ha generado, por un lado, nuevos problemas en b usqueda de patrones y, por otro lado, la necesidad de algoritmos ecientes para los problemas cl asicos. En otras disciplinas, tales como Tecnolog a Musical o en la misma Inform atica, han aparecido tambi en aplicaciones de estas t ecnicas. El problema m as b asico en la b usqueda de patrones consiste en buscar todas las ocurrencias de un patr on P en un texto T . Ambos objetos, patr on y texto, se conciben como dos cadenas de caracteres tomados de un alfabeto com un. La longitud de P se designa por m y la de T , por n. Veamos un ejemplo de este problema. Supongamos que el alfabeto es {C, G, T, A}, el alfabeto formado por las cuatro bases del ADN. Queremos encontrar todas las ocurrencias de P = {CGGT AGC } en el texto T de m as abajo.

= {AGT CCT GAAGGT T AACGGTAGCAGT CCT GAAGGT T AACGGTAGCAAAT T T GGGCCCCGT A}

Los caracteres subrayados de T aparecen cada 10 posiciones para facilitar la lectura en la cadena de caracteres. El patr on P aparece en las posiciones 16 y y 38, y en ninguna m as. Tama nos realistas para P y T en algunas aplicaciones en Bioinform atica pueden llegar a ser tan grandes como m = 1000 y n = 107 . El diccionario de la RAE tiene 87.000 entradas, las cuales se basan en un l exico de 270 millones de entradas. La b usqueda de la palabra Obama en Google produce 213.000.000 p aginas en 0, 24 segundos aproximadamente. Estos son unos pocos ejemplos de situaciones en que se usan t ecnicas de b usqueda de patrones en la pr actica real.

Distancia de edici on

La distancia de edici on es una distancia que mide la diferencia entre dos cadenas de caracteres contando el n umero m nimo de operaciones que hace falta para transformar una cadena en la otra. Las operaciones que se usan habitualmente son la inserci on, el borrado y la sustituci on de caracteres. A estas operaciones se les dan pesos, los cuales dependen de la aplicaci on en concreto. La distancia de edici on se conoce tambi en por distancia de Levenshtein, que fue el primero en proponerla en 1965. Como ejemplo, consid erense las cadenas S1 = {hasta} y S2 = {pastor}. La distancia entre hasta y pastor es 3, ya que con 3 cambios se transforma una en otra: 1

1. Substituci on de h por p: hasta pasta. 2. Substituci on de a por o: pasta pasto. 3. Inserci on de r al nal de la cadena: pasta pastor. Cualquier otra transformaci on entre ambas cadenas lleva m as operaciones y, por tanto, la distancia es 3.

El problema

El problema que se propone en este entrenamiento es una combinaci on de los dos problemas descritos m as arriba, esto es, proponemos resolver el problema de la b usqueda de patrones con distancia de edici on. Formalmente, dado un patr on P , un texto T , y un par ametro k , con 0 k < m, encontrar todas las cadenas S en T con la condici on de que d(S, P ) k . En otras palabras, encontrar todas las cadenas en el texto T que se encuentran a distancia de P menor que k . Esto implica encontrar las ocurrencias de P m as todas aquellas cadenas que se pueden transformar en P con menos operaciones que k . Por ejemplo, si jamos k = 1, en el texto T = {xxhastayyhaxta}, el patr on P = {hasta} se encuentra varias veces: Una vez en la posici on 2 a distancia 1 con borrado: xhasta hasta. Una vez en la posici on 3 a distancia 0, es decir, la ocurrencia exacta de P = {hasta}. Una vez en la posici on 3 a distancia 1 con borrado: hastay hasta. Una vez en la posici on 3 a distancia 1 con inserci on: hast hasta. Una vez en la posici on 4 a distancia 1 con inserci on: asta hasta. Una vez en la posici on 10 a distancia 1 con substituci on: haxta hasta. La respuesta al problema en este caso ser a 4 ocurrencias de P en T a distancia de edici on menor o igual que 1. En general, los borrados, inserciones y sustituciones se pueden dar en cualquier car acter de una cadena. En el ejemplo anterior, los borrados solo aparecen en los extremos, pero en otros casos pueden aparecer en posiciones arbitrarias. Pi ensese en la cadena hata, la cual se transforma en hasta con una inserci on en el centro.

La aplicaci on

La aplicaci on consistir a en dar un algoritmo que resuelva el problema planteado anteriormente; despu es el participante tiene que programar su algoritmo. Claramente, el problema se divide en dos partes, la b usqueda de un patr on en un texto y la distancia de edici on entre dos cadenas de caracteres. Ambos subproblemas han de ser combinados correctamente para resolver el problema.

4.1

Entrada

La entrada del problema estar a dada en un chero que contendr a tres l neas. La primera ser a el entero k , donde 0 k 4; la segunda es el patr on P ; y la tercera l nea contendr a el texto T .

4.2

Salida

La salida debe ser un chero que contenga varias l neas, una por cada ocurrencia de P en T en donde se especique la posici on de la ocurrencia en T , la distancia a que se encuentra de P y la cadena encontrada; cada dato estar a separado por un espacio en blanco. Si P no ocurre en T para ninguna distancia, el chero solo contendr a un 0.

4.3

Ejemplo

Una entrada ser a: 1 hasta xxhastayyhaxta La salida ser a: 2 3 3 3 4 10 1 0 1 1 1 xhasta hasta hastay hast asta 1 haxta

La b usqueda del patr on Q = ddddd en el patr on T = xxhastayyhaxta con k = 1 dar a como salida: 0

Memoria

Se entregar a una memoria con los siguientes puntos: Soluci on algor tmica a los problemas planteados. Esta soluci on incluir a correcci on y an alisis de la complejidad. Se puede incluir una peque na rese na hist orica de ambos problemas. Explicaci on de las implementaciones realizadas. Se incluir a las estrategias de programaci on usadas; el c odigo aparecer a comentado. Menci on de las fuentes utilizadas para resolver el algoritmo y realizar la implementaci on. Conclusiones. En esta secci on se pide al participante que aporte sus propias conclusiones respecto a la aplicaci on planteada. Por ejemplo, el participante podr a reexionar sobre c omo mejorar el algoritmo propuesto con estructuras de datos m as avanzadas o con otros algoritmos. Se descontar an puntos de la memoria si: Hay errores ortogr acos y gramaticales. Contiene material irrelevante. Falta claridad de pensamiento. El c odigo no est a comentado correctamente.

Concurso de programaci on de la EUI - 2009


Aplicaci on Diciembre de 2009

1.

Introducci on a la complejidad

En Inform atica el an alisis de complejidad es una parte importante del dise no de algoritmos. Este an alisis permite cuanticar el tiempo y el espacio que gasta un algoritmo en ejecutarse. En este problema nos centraremos en el an alisis en tiempo de los algoritmos. Analizar un algoritmo en tiempo consiste en asignar costes a las operaciones b asicas del algoritmo y calcular cu anto lleva la ejecuci on en t ermino de esos costes. Como es obvio, diferentes entradas producir an diferentes costes. Un modelo de computaci on es una asignaci on de esas operaciones b asicas, llamadas con frecuencia operaciones primitivas. Las operaciones primitivas siempre tienen coste constante. El modelo de computaci on que vamos a usar en esta aplicaci on se llama RAM real. En este modelo las siguientes operaciones tienen coste unidad. 1. Las operaciones aritm eticas: +, , x, /. 2. Funciones matem aticas: sin, cos, ln, etc. 3. Comparaciones entre n umeros: <, >, , , =, ! =. 4. Operaciones booleanas: &, , , |, . 5. Asignaci on de n umeros a variables. 6. Acceso a una direcci on de memoria. Antes de presentar la aplicaci on del concurso, consideremos el an alisis del algoritmo de inserci on para ordenar n umeros enteros. Tenemos el siguiente pseudoc odigo para dicho algoritmo.

1 2 3 4 5 6 7

INSERCION(M) for j = 2 to n { clave = M [j ] i=j1 while (0 < i < j 1) and (M [i] > clave) { M [i + 1] = M [i] i=i1 } M [i + 1] = clave }

Coste c1 c2 c3 c4 c5 c6 c7

N umero de veces n1 n1 n1
n j =2 pj n j =2 (pj n j =2 (pj

1) 1)

n1

. Figura 1: C alculo de la complejidad en tiempo de INSERCION El tiempo total de ejecuci on se calcula sumando los tiempos de ejecuci on de cada sentencia del algoritmo. Los n umeros ci son dichos costes, los cuales se obtienen sumando los costes de las operaciones primitivas contenidas en cada sentencia. Una sentencia que se ejecuta n veces a coste ci contribuye ci n al coste total. Si T (n) es el tiempo total de ejecuci on, tenemos: T (n) = c1 (n 1) + c2 (n 1) + c3 (n 1) +
n n n

c4
j =2

pj + c5
j =2

(pj 1) + c6
j =2

(pj 1) + c7 (n 1).

(1)

En esta ecuaci on los ci son constante en virtud del modelo de computaci on, pero las pj son desconocidas y var an con cada entrada de datos particular. Por ejemplo, si el algoritmo recibe los datos en orden no decreciente, nica vez y, por tanto, pj = 1, para j = 2, . . . , n 1. el bucle de las l neas 46 del algoritmo se ejecutar an una u En este caso, la complejidad se vuelve una funci on lineal de n: T (n) = c1 (n 1) + c2 (n 1) + c3 (n 1) + c4 (n 1) + c7 (n 1) = n(c1 + c2 + c3 + c4 + c7 ) (c1 + c2 + c3 + c4 + c7 ). (2)

Si los datos est an dados en orden inverso, entonces el bucle de las l neas 46 se ejecutar a j veces, o sea, pj = j , para j = 2, . . . , n 1. Entonces: n(n + 1) 1 + 2

T (n) = c1 (n 1) + c2 (n 1) + c3 (n 1) + c4 c5 = n(n 1) n(n 1) + c6 + c7 (n 1) 2 2

n2 c4 c5 c6 (c4 + c5 + c6 ) + n c1 + c2 + c3 + + c7 2 2 2 2 (c1 + c2 + c3 + c4 + c7 ).

(3)

puede variar Como podemos deducir de las ecuaciones 2 y 3, la complejidad en tiempo de INSERCION entre una funci on lineal y una cuadr atica. La primera complejidad, la lineal, es la del mejor caso; la segunda, 2

la cuadr atica, la del peor de los casos. Este ejemplo ilustra cu an variable puede ser el comportamiento de un algoritmo. Hay un tercer tipo de an alisis de complejidad, el an alisis en media, en el que se promedia la complejidad de todos los casos. podemos Dado que los costes de las operaciones primitivas son la unidad, en el algoritmo INSERCION calcular el coste en el mejor caso y en el peor caso. V ease la gura de m as abajo. INSERCION(M) for j = 2 to n { clave = M [j ] i=j1 while (0 < i < j 1) and (M [i] > clave) { M [i + 1] = M [i] i=i1 } M [i + 1] = clave { Coste c1 = 4 c2 = 4 c3 = 4 c4 = 7 c5 = 6 c6 = 3 c7 = 5 N umero de veces n1 n1 n1
n j =2 pj n j =2 (pj n j =2 (pj

1 2 3 4 5 6 7

1) 1)

n1

. Figura 2: C alculo de la complejidad en tiempo de INSERCION Explicamos a continuaci on la asignaci on de algunos costes: Por ejemplo, en la l nea 1 tenemos la sentencia for j = 2 to n. Esta sentencia implica la recuperaci on de las variables j y n (coste 1 cada recuperaci on), asignaci on de 2 a la variable j (coste 1) y la comparaci on entre j y n (coste 1). La constante 2 se considera que tiene coste 0. En total, esta sentencia tiene un coste de 4. El coste de obtener M [i] es 2, uno para obtener la direcci on de memoria de M y otro para obtener el dato en la direcci on de memoria M + i. Si en una sentencia se encuentra dos veces la misma variable, solo se cuenta una vez su recuperaci on. As , la sentencia i = i 1 tiene coste 3, uno por la recuperaci on de i, otro por la operaci on aritm etica ltimo por la asignaci i 1 y un u on de i 1 a i. Entonces, para el mejor caso tenemos: n(4 + 4 + 4 + 7 + 5) (4 + 4 + 4 + 7 + 5) = 24n 24 T (n) Y para el peor caso: n2 7 6 3 (7 + 6 + 3) + n 4 + 4 + 4 + + 5 (4 + 4 + 4 + 7 + 5) 2 2 2 2

T (n)

(4) (5)

8n2 + 15n 24 En resumen, podemos armar que: 3

24n 24 T (n) 8n2 + 15n 24 Si n = 10, por ejemplo, entonces 216 T (n) 926.

2.

Estructuras de control
El c alculo de costes para estructuras de control es algo m as delicado. Para un bucle for como el siguiente: for i = 1 to n { j =j+1 }

es claro que el coste de la cabecera del for es n(1 + 1 + 1 + 1) = 4n. En total, la sentencia anterior tendr a coste 4n(1 + 1 + 1) = 12n Sin embargo, para un bucle while, en que el n umero de iteraciones depende de una condici on l ogica, ya no es tan claro cu al es el coste exacto. Por ejemplo, en el bucle while (M [i] > j ) { i=i1 } podr a encontrar problemas como salidas de rango de M o entrar en un bucle innito cuyo coste ser a innito! Dicho esto, queremos armar que mola m as ayuntarse que jam on yantar. Por esta raz on, en todo lo que sigue impondremos la condici on de que los bucles while presenten una primera condici on que controle el n umero m aximo de ejecuciones. En el ejemplo de la gura 1, l neas 46, escribimos: while 0 < i < j 1 and M [i] > clave { M [i + 1] = M [i] i=i1 } La sentencia if condici on then bloque-1 else bloque-2 tiene como coste en el mejor caso el m nimo de los costes entre bloque-1 y bloque-2, mientras que el coste en el peor caso es el m aximo de los costes de bloque-1 y bloque-2.

3.

La aplicaci on

Tras la introducci on anterior, podemos describir la aplicaci on del concurso. La aplicaci on consistir a en analizar un programa y obtener autom aticamente las complejidades en el mejor y peor caso, tal y como se ha hecho en los ejemplos de m as arriba. El programa estar a escrito en C y tendr a las siguientes restricciones: 4

No aparecer an los encabezados; solamente el cuerpo del programa. Los bucles for y while aparecer an obligatoriamente entre llaves. nicamente constantes, valores de entrada y las variables de control. En los bucles while y for aparecer an u Se usar an las siguientes palabras reservadas de C para describir el programa: char, double, else, for, if, int, long, new, short, signed, sizeof, typedef, unsigned, while. Los operadores son: +, , , /, , % y and, compl, not, or, xor.

3.1.

Entrada

La aplicaci on recibir a como entrada: El tama no de las entradas de datos. Una lista de las variables del programa. El programa en s .

3.2.

Salida

La aplicaci on devolver a dos n umeros enteros; el primero ser a la complejidad en el mejor caso y el segundo, en el peor caso.

3.3.

Ejemplos

Una entrada ser a: 20 n for (n > 0; n ) { M[n]=n*n; } La salida ser a: 160 160 que corresponden a las dos complejidades. Otra posible entrada ser a:

20 n if (n == 0 % 2) { for (n > 0; n ) { M[n]=0; } else for (n > 0; n ) { M[n]=n*n; } En este caso la salida ser a: 140 160

4.

Memoria
Se entregar a una memoria con los siguientes puntos: Soluci on algor tmica a los problemas planteados. Esta soluci on incluir a correcci on y an alisis de la complejidad. Explicaci on de las implementaciones realizadas. Se incluir a las estrategias de programaci on usadas; el c odigo aparecer a comentado. Si ha lugar, menci on de las fuentes utilizadas para resolver el algoritmo y realizar la implementaci on. Conclusiones. En esta secci on se pide al participante que aporte sus propias conclusiones respecto a la aplicaci on planteada. Se descontar an puntos de la memoria si: Hay errores ortogr acos y gramaticales. Contiene material irrelevante. Falta claridad de pensamiento. El c odigo no est a comentado correctamente.