Opracowanie ODC: Odchudzanie

Transkrypt

Opracowanie ODC: Odchudzanie
Opracowanie ODC: Odchudzanie
Autor zadania: Jacek Tomasiewicz.
Rozwiązanie
Najprostszym rozwiązaniem jest sprawdzenie każdej pary fragmentu, w której Kozik może rozpocząć i
zakończyć swój trening. Takie rozwiązanie jest niestety zbyt wolne, gdyż działa w złożoności czasowej O(n2).
Zauważmy, że dla każdego możliwego końca fragmentu najlepszym początkiem będzie maksymalna waga
Kozika, która występowała od początku treningu do aktualnego dnia (wtedy spadek wagi będzie właśnie największy).
Taką maksymalną wagę możemy łatwo obliczać, aktualizując nasze maksimum z każdym nowym dniem. Rozwiązanie
takie działa w złożoności czasowej O(n).
Uwaga: Rozwiązanie, które znajduje maksimum i minimum w całym ciągu i liczy ich różnice jest błędne. Prosty
przykład – Kozik pierwszego dnia ważył 1, a drugiego 10 – maksymalny spadek Kozika powinien wynosić 0.
Pseudokod
1.
2.
3.
4.
5.
6.
7.
8.
wczytaj(n)
aktualny_max := 0
wynik := 0
for k := 1 to n do
wczytaj(x)
if x > aktualny_max then
aktualny_max := x
if aktualny_max – x > wynik then
9.
wynik := aktualny_max - x
10. wypisz(wynik)
Opracowanie ODC: Odchudzanie
1/1