





Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024
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. |