Programa 4: Vaciando agua
Escribe un programa en C, C++ o Java que lea nueve enteros a, b, c, d,
e, f, p, q, r, y que decida si existe alguna secuencia de movimientos
(tal como la descrita en el problema 3.8) que tome tres jarras con
capacidades a, b y c que inicialmente contienen d, e y f litros de agua
para que al final contengan p, q y r litros de agua. Puedes suponer que
0 < a, b, c < 10, 0 <= d, p <= a, 0 <= e, q <= b, 0
<= f, r <= c y que d+e+f = p+q+r. Tu programa debe llamarse
vag.c, vag.cpp o vag.java, debe compilar con gcc, g++ o gcj, ejecutarse
en menos de 1 segundo, y no debe leer ni escribir ningún dato
adicional. En el primer ejemplo mostrado abajo la primera jarra tiene
capacidad 5, al principio tiene 2 litros de agua y al final debe tener
1, la segunda jarra tiene capacidad 4, al principio tiene 1 litro de
agua y al final debe tener 3 y la tercera jarra tiene capacidad 3, al
principio tiene 2 litros de agua y al final debe tener 1. Esto es
imposible y se indica con un -1. El segundo ejemplo se puede resolver
en dos movimientos: primero vaciando la primera jarra en la segunda y
luego vaciando la tercera jarra en la segunda.
Ejemplos de entrada
|
Ejemplos de salida
|
5 4 3
2 1 2
1 3 1
|
-1
|
5 4 3
2 1 2
0 4 1
|
2
1 2
3 2
|