In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
Bajtazar stworzył superkomputer o bardzo nowatorskiej konstrukcji. Może on zawierać wiele (takich samych) procesorów. Każdy procesor może w jednostce czasu wykonać jedną instrukcję.
Programy nie są w tym komputerze wykonywane sekwencyjnie, lecz mają strukturę drzewa. Każda instrukcja programu może mieć zero, jedną lub wiele instrukcji następujących po niej. Po wykonaniu każdej instrukcji należy wykonać instrukcje następujące po niej, jednak można je wykonać w dowolnej kolejności; w szczególności można je wykonywać równolegle na różnych procesorach. Jeśli w superkomputerze jest procesorów, to w każdej jednostce czasu będzie można wykonać równolegle co najwyżej instrukcji.
Bajtazar ma do uruchomienia pewien program. Ponieważ chce optymalnie wykorzystywać swoje zasoby, zastanawia się, jak liczba procesorów wpłynie na szybkość obliczeń. Prosi Cię o określenie, dla danego programu i liczby procesorów, najkrótszego możliwego czasu wykonania tego programu z użyciem superkomputera o tylu procesorach.
W pierwszym wierszu standardowego wejścia znajdują się dwie liczby całkowite i () oddzielone pojedynczym odstępem, oznaczające liczbę instrukcji programu Bajtazara oraz liczbę zapytań.
W drugim wierszu wejścia znajduje się ciąg liczb całkowitych () pooddzielanych pojedynczymi odstępami: oznacza liczbę procesorów, którymi dysponuje Bajtazar w -tym zapytaniu.
W trzecim i ostatnim wierszu wejścia znajduje się ciąg liczb całkowitych () pooddzielanych pojedynczymi odstępami: określa numer instrukcji, po której następuje instrukcja numer . Instrukcje numerowane są kolejnymi liczbami naturalnymi od 1 do , przy czym instrukcja numer 1 to pierwsza instrukcja programu.
W testach wartych łącznie 35% punktów zachodzi dodatkowo warunek: , . W podzbiorze tych testów wartym łącznie 20% punktów zachodzi dodatkowo warunek: , .
Twój program powinien wypisać na standardowe wyjście jeden wiersz zawierający ciąg liczb całkowitych pooddzielanych pojedynczymi odstępami: -ta z tych liczb powinna określać minimalny czas wykonania programu przy założeniu, że superkomputer Bajtazara posiada procesorów.
Dla danych wejściowych:
20 1 3 1 1 1 3 4 3 2 8 6 9 10 12 12 13 14 11 11 11 11
poprawną odpowiedzią jest:
8
Wyjaśnienie do przykładu:
Wykonanie programu może wyglądać następująco:
Czas | Instrukcje | ||||||||||||||||||||||||||||||||
|
|
Testy "ocen":
Autor zadania: Michał Włodarczyk.
<Wyślij rozwiązanie> [0/100]