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