El llenado de barriles
Publicado por Frank Rafael (2 intervenciones) el 27/03/2006 15:16:33
Este problema me gusta porque utiliza una ley física que desde pequeño me llamó la atención. Si alguien fuera tan amable de mandarme una solución, gracias.
El llenado de barriles
Existen N (1 < N <= 100) barriles iguales y vacíos en una superficie horizontal
El volumen de cada barril es de 100 unidades. Cada dos de ellos están
conectados a una tubería. Cada tubería es conectada al fondo de dos barriles y
esta tiene su propia válvula las cuales pueden estar solo en dos posiciones:
"ABIERTO" o "CERRADO". Al principio todas las válvulas están cerradas. Si una
válvula es abierta, entonces el líquido de un barril conectado a otro barril
puede rápida y libremente fluir al otro de modo que el nivel de líquido en
estos barriles será igual (el principio de los vasos comunicantes). Si una
válvula es cerrada, el fluido a través de esta tubería es imposible. Dos tipos
de operaciones son permitidas:
1) "P" (para echar) cuando alguna cantidad de líquido es vertida en el barril
prescrito. La descripción de la operación es: "P A M", donde A es el barril y
M es la cantidad de líquido (en unidades) a ser vertida en el barril (A y M
son enteros, (0 < A <= N, 0 < M <= 1000).
2) "V" (para una válvula) cuando una válvula prescrita es cambiada a la
posición contraria (por ejemplo, esta válvula se cierra si ha sido abierta y
se abre si ha sido cerrada). La descripción de la operación es "V n1 n2",
donde n1 y n2 son los números de los barriles que están conectados con una
tubería que tiene esta válvula (n1 y n2 son enteros, 0 < n1 <= N, 0 < n2 <= N,
n1 <> n2). Dos descripciones diferentes "V n1 n2" y "V n2 n1" se refieren a
la misma válvula.
Su tarea es ejecutar una secuencia de operaciones dadas. No tendrás en cuenta
la cantidad de líquido en las tuberías. Si alguna operación de echar ("P") no
puede ser ejecutada debido al derrame del líquido, la ejecución de esta
secuencia de la operación debe ser detenida y dar una salida apropiada.
ENTRADA:
El fichero de entrada (BARRILES.IN) contiene los números N y K (número de
operaciones 0 < K <= 1000) en la primera línea y la descripción de las
operaciones en las siguientes K líneas, una descripciín por línea.
SALIDA:
EL fichero de salida (BARRILES.OUT) contiene la palabra "OK" y los valores de
un mínimo y un máximo nivel de líquido entre todos los barriles al finalizar,
si la secuencia de operaciones fue completamente ejecutada o la palabra
"DESBORDAMIENTO" y el número de la operación durante la cual el desbordamiento
del líquido sucedió. Los valores del nivel de líquido deben ser escritos como
números reales con dos lugares decimales.
Ejemplo de Entrada Ejemplo de Salida
2 6 OK 75.00 95.00
P 1 63
P 2 37
V 1 2
P 1 50
V 2 1
P 1 20
El llenado de barriles
Existen N (1 < N <= 100) barriles iguales y vacíos en una superficie horizontal
El volumen de cada barril es de 100 unidades. Cada dos de ellos están
conectados a una tubería. Cada tubería es conectada al fondo de dos barriles y
esta tiene su propia válvula las cuales pueden estar solo en dos posiciones:
"ABIERTO" o "CERRADO". Al principio todas las válvulas están cerradas. Si una
válvula es abierta, entonces el líquido de un barril conectado a otro barril
puede rápida y libremente fluir al otro de modo que el nivel de líquido en
estos barriles será igual (el principio de los vasos comunicantes). Si una
válvula es cerrada, el fluido a través de esta tubería es imposible. Dos tipos
de operaciones son permitidas:
1) "P" (para echar) cuando alguna cantidad de líquido es vertida en el barril
prescrito. La descripción de la operación es: "P A M", donde A es el barril y
M es la cantidad de líquido (en unidades) a ser vertida en el barril (A y M
son enteros, (0 < A <= N, 0 < M <= 1000).
2) "V" (para una válvula) cuando una válvula prescrita es cambiada a la
posición contraria (por ejemplo, esta válvula se cierra si ha sido abierta y
se abre si ha sido cerrada). La descripción de la operación es "V n1 n2",
donde n1 y n2 son los números de los barriles que están conectados con una
tubería que tiene esta válvula (n1 y n2 son enteros, 0 < n1 <= N, 0 < n2 <= N,
n1 <> n2). Dos descripciones diferentes "V n1 n2" y "V n2 n1" se refieren a
la misma válvula.
Su tarea es ejecutar una secuencia de operaciones dadas. No tendrás en cuenta
la cantidad de líquido en las tuberías. Si alguna operación de echar ("P") no
puede ser ejecutada debido al derrame del líquido, la ejecución de esta
secuencia de la operación debe ser detenida y dar una salida apropiada.
ENTRADA:
El fichero de entrada (BARRILES.IN) contiene los números N y K (número de
operaciones 0 < K <= 1000) en la primera línea y la descripción de las
operaciones en las siguientes K líneas, una descripciín por línea.
SALIDA:
EL fichero de salida (BARRILES.OUT) contiene la palabra "OK" y los valores de
un mínimo y un máximo nivel de líquido entre todos los barriles al finalizar,
si la secuencia de operaciones fue completamente ejecutada o la palabra
"DESBORDAMIENTO" y el número de la operación durante la cual el desbordamiento
del líquido sucedió. Los valores del nivel de líquido deben ser escritos como
números reales con dos lugares decimales.
Ejemplo de Entrada Ejemplo de Salida
2 6 OK 75.00 95.00
P 1 63
P 2 37
V 1 2
P 1 50
V 2 1
P 1 20
Valora esta pregunta
0