Concurso de programación 2008 Escoba Entrenamiento 2 Nivel 1

Anuncio
Concurso de programación 2008
Escuela Universitaria de Informática
Universidad Politécnica 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ñola, y en la mesa se ponen otras
cuatro. El número de cartas de cada jugador va disminuyendo con cada ronda hasta quedarse
sin ninguna, momento en que se reparten otras tres. Este proceso continúa hasta que no queden
cartas por repartir. Después de que se juegue la última mano se procederá a contar el total de
puntos de cada jugador.
El número de cartas en la mesa irá variando según se vaya desarrollando el juego e incluso puede
ser 0, si un jugador acaba de conseguir una escoba. Lo que nunca podrá ocurrir es que, con una
combinación de cartas en la mesa, se pueda sumar 15. Las cartas con número tienen un valor
igual a su número 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ás de esto, al final de la partida, el jugador
que tenga más oros, sietes o cartas se llevará 1 punto por cada uno de estos conceptos. Cada
jugador debe tratar de conseguir los máximos puntos posibles en cada jugada y, si no es posible
conseguir ningún punto directo, jugar para que al final pueda conseguir los máximos 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ál es la mejor jugada
en ese momento.
Entrada
En la primera lı́nea se indica el número 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 éstas, una lı́nea con un carácter y un número
separados por un espacio (palo-espacio-número) que codifican la carta del siguiente modo:
a) Carácter: O (oros), C (copas), E (espadas) ó B (bastos).
b) Número: 1, 2, 3, 4, 5, 6, 7, 8 (sota), 9 (caballo) ó 10 (rey).
Finalmente hay tres lı́neas para codificar las cartas que el jugador tiene en la mano.
Salida
La solución de cada uno de los casos de prueba se escribe del siguiente modo: un entero en
una lı́nea indicando el número de cartas que juega el jugador (0 si no puede jugar ninguna)
y, para cada una de éstas, 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á leer los datos del problema y escribir la solución en los siguientes
archivos de entrada y salida respectivamente:
- Entrada: cpeui08 Escoba.txt
- Salida: cpeui08 Solucion Escoba.txt
Concurso de programación 2008
Escuela Universitaria de Informática
Universidad Politécnica 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, únicamente, puede trabajar en uno concreto cada dı́a. Para
el pedido i−ésimo, el entero Ti (1 ≤ Ti ≤ 1000) determina el número de dı́as que tardará el
zapatero en finalizar el trabajo.
Pero la popularidad tiene un precio. Por cada dı́a de demora en el inicio del trabajo en el pedido
i−ésimo, el zapatero se ha comprometido a pagar una compensación de Si (1 ≤ Si ≤ 10000)
céntimos. Ayudemos al zapatero escribiendo un programa que determine el orden en que debe
de realizar los pedidos, para que la penalización total sea mı́nima.
Entrada
En la primera lı́nea se indica el número de casos de prueba. Cada caso de prueba se
describe de la siguiente manera: una lı́nea con el número de pedidos N (1 ≤ N ≤ 1000) y,
para cada uno de los pedidos, una lı́nea con el tiempo de finalización y la compensación
económica del pedido, separados por un espacio.
Salida
Para cada caso de prueba el programa deberá escribir la secuenciación de los pedidos
(representados por su posición en la entrada) que conlleva la menor compensación posible:
un pedido (entero) en cada lı́nea. Si existen varias soluciones posibles, se considerará la
primera en orden lexicográfico.
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á leer los datos del problema y escribir la solución en los siguientes
archivos de entrada y salida respectivamente:
- Entrada: cpeui08 Zapatero.txt
- Salida: cpeui08 Solucion Zapatero.txt
Concurso de programación 2008
Escuela Universitaria de Informática
Universidad Politécnica de Madrid
Partición
Entrenamiento 2
Nivel 3
Sea R una región limitada por una curva poligonal con lados horizontales y verticales, con
vértices de coordenadas enteras y descrita en sentido antihorario. Considerando particiones de
R en rectángulos de altura 1, se trata de determinar el número de rectángulos de la partición
de cardinal mı́nimo. En el ejemplo siguiente la respuesta es 27.
R
Entrada
En la primera lı́nea se indica el número de casos de prueba. Para cada caso de prueba: en
una lı́nea se indica el número de vértices de la poligonal, n, y en las siguientes n lı́neas
aparecen las coordenadas de los vértices (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ón.
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á leer los datos del problema y escribir la solución en los siguientes
archivos de entrada y salida respectivamente:
- Entrada: cpeui08 Particion.txt
- Salida: cpeui08 Solucion Particion.txt
Descargar