Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Przelewki
(przelewki)
Memory limit: 128 MB
Time limit: 2.00 s

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
5 6 2 4
2

Wystarczy nalać 6 litrów do naczynia drugiego, potem przelać 2 litry do trzeciego.