EXMEN DE LA PRCTICA DE PRO2 Cuatrimestre primavera 2012 - JUEGO DE PRUEBAS PBLICO

Esquema del documento:

0. Observaciones previas.
1. Composicin de los juegos de pruebas.
2. Entrada y salida de las operaciones.
3. Juego de pruebas pblico.

-----------------------------------------------------------------------------
0. OBSERVACIONES PREVIAS
-----------------------------------------------------------------------------

* Para una ejecucin, el nmero de pelculas (M, entero mayor que 0) de la
  organizacin se lee como dato de inicializacin y no cambia a lo largo de la
  ejecucin.

* Para una ejecucin, el nmero de servidores en la red (N, entero mayor que 0)
  se lee como dato de inicializacin y no cambia a lo largo de la ejecucin.

* Los identificadores de pelcula y servidor son enteros mayores de 0 y menores
  o iguales que M y N, respectivamente.

* El tiempo de las operaciones de peticin es siempre incremental. Se garantiza
  que si una peticin se realiza en tiempo t, la siguiente se realizar en un
  tiempo t1 tal que t < t1.

* En general, los datos de operaciones diferentes se leern en lneas
  diferentes y los resultados de operaciones diferentes se escribirn en lneas
  diferentes.

* Los ficheros de entrada de los juegos de pruebas tendrn lneas de menos de
  80 caracteres. Si necesitamos datos muy grandes para una misma operacin, los
  dividiremos en varias lneas.

* No es necesario comprobar si los datos que se van a leer son consistentes,
  por ejemplo, si se dice que un servidor contendr k pelculas, est
  garantizado que se podrn leer y sern vlidas, no repetidas, etc.

-------------------------------------------------------------------------------
1. COMPOSICIN DE LOS JUEGOS DE PRUEBAS
-------------------------------------------------------------------------------

La primera accin es leer el nmero M de pelculas. A continuacin se lee la
informacin relativa a esas pelculas, es decir su tamao (o peso) en
Megabytes, en orden correlativo desde la primera pelcula.

A continuacin se lee el nmero de servidores, seguido de su estructura de red.
sta sigue el formato estndar de lectura de un rbol en preorden que se ha
visto en la sesiones de laboratorio, con una marca igual a 0.

Finalmente, se leen los datos de los servidores: su ancho de banda y las
pelculas que tienen disponibles. El ancho de banda es un entero mayor que 0.
Las pelculas que el servidor tiene disponibles vienen dadas por una
subsecuencia no vaca de enteros mayores o igual a 0. Al primer entero (con
valor entre 0 y M), que representa el nmero de pelculas disponibles, le sigue
un conjunto de enteros entre 1 y M no repetidos (tantos como indique el nmero
de pelculas ledo antes) que representan los identificadores de la pelculas.

Una vez el sistema ha sido inicializado, pasamos a aplicar las distintas
operaciones, cuya estructura viene especificada en la siguiente seccin.

-------------------------------------------------------------------------------
2. ENTRADA Y SALIDA DE LAS OPERACIONES
-------------------------------------------------------------------------------

* INTRODUCIR UNA PETICIN EN EL SISTEMA

Identificacin: -1

Datos: Dos enteros. El primero representa el identificador de pelcula, el
segundo el instante en el que se pide.

Salida: Si la peticin se puede satisfacer, hay que escribir dos filas. En la
primera fila, el nmero de unidades de tiempo que durar la descarga.  En la
segunda, los identificadores de los servidores que atendern la descarga
ordenados ascendentemente. En caso contrario, solo una fila, con un 0.

Efectos sobre el sistema: los servidores implicados no se pueden usar durante
la duracin de la descarga correspondiente; se actualizan las estadsticas de
peticiones de pelculas.


* CONSULTAR LA PELCULA MS SOLICITADA HASTA LA ACTUALIDAD

Identificacin: -5

Datos: Ninguno.

Salida: 0 0 si no hay pelculas con peticiones aceptadas; en caso contrario
el identificador de la pelcula ms solicitada hasta la actualidad 
(la de menor identificador en caso de empate de peticiones aceptadas)
y el nmero de peticiones aceptadas que ha recibido hasta la actualidad.

* FINALIZAR PROGRAMA

Identificacin: Entero diferente de -1 y -5.

Datos: Ninguno

Salida: Ninguna

-------------------------------------------------------------------------------
3. JUEGO DE PRUEBAS PBLICO
-------------------------------------------------------------------------------

Entrada comentada:
------------------
// nmero de pelis (M)
14
// y sus pesos
10  // peso peli 1
20  // peso peli 2
30  // ...
40
50
60
70
800
90
100
110
120
260
140  // peso peli 14

// nmero servidores (N)
7
// su estructura de red
5 3 6 0 0 1 0 0 2 0 7 0 4 0 0
// y sus datos
10  // ancho de banda servidor 1
2 1 13 // 2 pelis en el servidor 1: la 1 y la 13
20  // ancho de banda servidor 2
2 8 4  // 2 pelis en el servidor 2: la 8 y la 4
30
2 5 13
40
2 7 8
50
3 9 13 8
60
2 11 12
70  // ancho de banda servidor 7
2 13 8 // 2 pelis en el servidor 7: la 13 y la 8

-5 // Consulta de pelcula mas solicitada

-1 13 100 // Peticion (peli 13, instante 100)

-1 8 200 // Peticin (peli 8, instante 200)

-1 14 300 // Peticin (peli 14, instante 300)

-5 //  Consulta de pelcula ms solicitada

-1 13 500 // Peticin (peli 13, instante 500)

-5

-6 // Salimos del programa

Salida comentada:
-----------------

Pelicula mas solicitada
0 0   // Como no hemos hecho peticiones
Peticion procesada y servidores
3   // Se procesa la peticin de duracin 3 (260 / 120 redondeado hacia arriba)
5 7    // y se escriben los identificadores de los servidores que usaremos
Peticion procesada y servidores
5  // Se procesa la peticin de duracin 5 (800 / 180 redondeado hacia arriba)
2 4 5 7  // y se escriben los identificadores de los servidores que usaremos
Peticion procesada y servidores
0 // Se procesa la peticin; no se satisface al no estar
la pelcula disponible en ningn servidor (duracion 0), no se ocupan servidores
Pelicula mas solicitada
8 1 // Pelicula mas solicitada. Las pelculas 13 y 8 tienen una peticin servida. Mostramos el id mas pequeo.
Peticion procesada y servidores
3 // Se procesa la peticin de duracin 3 (260 / 90 redondeado hacia arriba)
5 7 // y se escriben los identificadores de los servidores que usaremos
Pelicula mas solicitada
13 2 // Pelicula mas solicitada. La pelcula 13 tiene dos peticiones servidas.

Al final puede haber una lnea en blanco o ms.


-------------------------------------------------------------------------------

Entrada sin comentar: la entrada se ha de poder procesar si donde hay un
blanco, tabulador o salto de linea se ponen dos o mas (por ejemplo, para
separar las distintas acciones) o si donde hay dos o mas saltos de linea solo
se pone uno.

ver ficheros jpub1.in y jpub2.in
-------------------------------------------------------------------------------

Salida sin comentar: vuestro resultado ha de coincidir exactamente con este
(probandolo con el comando diff -Bb de Linux), salvo las lineas en blanco del
principio y del final, que pueden variar.

ver ficheros jpub1.out y jpub2.out
-------------------------------------------------------------------------------
