Problem description
Bajtosoft jest wielkim potentatem na bajtockim rynku informatycznym. Ostatnimi czasy, po wchłonięciu innych mniejszych firm bardzo się rozrósł. Rozrost firmy niesie za sobą szereg różnych problemów. Między innymi z wynagrodzeniami pracowników.
W Bajtosofcie obowiązują następujące reguły gry:
każdy pracownik (poza szefami działu) ma bezpośredniego przełożonego,
każdy pracownik zarabia całkowitą, dodatnią liczbę bajtalarów,
przełożony musi zarabiać co najmniej połowę więcej pieniędzy niż dowolny z jego podwładnych.
Poza tymi trzema zasadami, nie ma żadnych innych.
Zarząd Bajtosoftu wie, że zadowolony pracownik to dobry pracownik, a firma chce mieć samych dobrych pracowników. W związku z tym firma chciałaby każdemu pracownikowi zapłacić jak najwięcej. Niestety jak to w życiu, firma ma ograniczony budżet do co najwyżej K bajtalarów.
Napisz program, który: wczyta liczbę pracowników, budżet Bajtosoftu i relację pracowników w firmie, wyznaczy największą możliwą wypłatę dla pracownika zarabiającego w firmie najmniej (przy zachowaniu zasad wynagrodzeń w Bajtosofcie) i wypisze wynik na wyjście.
Wejście
W pierwszym wierszu wejścia znajdują się dwie liczby naturalne N i K, oddzielone pojedynczym odstępem i określające kolejno: liczbę pracowników w Bajtosofcie oraz budżet firmy na wynagrodzenia.
W drugim wierszu znajduje się N liczb całkowitych Ai, pooddzielanych pojedynczymi odstępami. i-ta liczba ciągu określa relację pracowniczą dla i-tego pracownika. Jeśli Ai > 0, to bezpośrednim przełożonym pracownika numer i jest pracownik numer Ai. Jeśli zaś Ai = 0, to pracownik i jest szefem działu i nie posiada bezpośrednich przełożonych.
Pracownicy są numerowani kolejnymi liczbami naturalnymi od 1 do N włącznie.
Możesz założyć, że dane wejściowe opisują poprawną relację pracowników – nie ma relacji cyklicznych.
Wyjście
W pierwszym i jedynym wierszu wyjścia powinna się znaleźć jedna
liczba całkowita – maksymalna możliwa wypłata dla najgorzej
zarabiającego pracownika w Bajtosofcie lub jedno słowo NIE
jeśli przyznanie wypłat zgodnie z powyżej opisanymi zasadami jest
niemożliwe.
Ograniczenia
1 ≤ N ≤ 200 000, 1 ≤ K ≤ 1018.
W testach wartych łącznie 50% maksymalnej punktacji N ≤ 2 000.
Przykład
Input | Output | Explanation |
|
|
Przykładowy poprawny sposób wypłat dla kolejnych pracowników jest następujący: 9, 3, 6, 5, 3, 3. |