Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024
Problem description
To zadanie to nie przelewki… Ale polega na przelewaniu, co prawda nie pieniędzy, ale wody.
Są trzy naczynia. Pierwsze ma pojemność A litrów, drugie B litrów, a trzecie C litrów. Chcemy z pomocą tych naczyń odmierzyć D litrów. Naczynia nie mają jednak żadnych podziałek. Celem jest więc uzyskanie odmierzonych D litrów w którymkolwiek z trzech naczyń.
Dozwolone jest:
- dolać wody do dowolnie wybranego naczynia, tak aby stało się pełne,
- przelać wodę z pewnego naczynia do innego, aż to pierwsze stanie się puste lub drugie pełne,
- wylać całą wodę z naczynia.
Naczynia początkowo są puste.
Ile minimalnie operacji należy wykonać, aby odmierzyć D litrów?
Napisz program, który wczyta pojemności naczyń i potrzebną ilość wody, wyznaczy minimalną liczbę ruchów niezbędnych do uzyskania zadanej objętości wody w dowolnym z naczyń i wypisze wynik na wyjście.
Wejście
W pierwszym (i jedynym) wierszu wejścia znajdują się cztery liczby naturalne A, B, C, D, pooddzielane pojedynczymi odstępami. Pierwsze trzy określają pojemności kolejnych naczyń w litrach, ostatnia zaś określa żądaną objętość wody.
Wyjście
W pierwszym (i jedynym) wierszu wyjścia powinna się znaleźć jedna
liczba całkowita – minimalna liczba ruchów niezbędna do odmierzenia
D litrów. Jeśli uzyskanie
żądanej objętości jest niemożliwe – należy wypisać NIE
.
Ograniczenia
1 ≤ A, B, C, D ≤ 200.
Przykład
Input | Output | Explanation |
|
|
Wystarczy nalać 6 litrów do naczynia drugiego, potem przelać 2 litry do trzeciego. |