Rozwiązanie Pseudokod

Transkrypt

Rozwiązanie Pseudokod
Opracowanie SKO: Duchoskoczki
Autor zadania: Joachim Jelisiejew, Jacek Tomasiewicz.
Rozwiązanie
Wprowadźmy oznaczenia: w[i] – maksymalna liczba punktów, którą można uzyskać startując z pola o numerze i.
W zadaniu bardzo pomocny jest fakt, że duchy mogą skakać tylko w lewo. Dzięki temu chcąc obliczyć wartość w[i],
możemy skorzystać z policzonych już wartości w[a[i]] i w[b[i]]. Kiedy mamy już policzoną tablicę w[], możemy
wypisać wynik, którym są indeksy dwóch największych liczb w tablicy w[].
Pseudokod
1. wczytaj(n, a[], b[], c[])
2. for i := 1 to n do
3.
if a[i] = 0 AND b[i] = 0 then
4.
5.
w[i] := c[i]
else if b[i] = 0 then
6.
7.
8.
9.
w[i] := w[a[i]] + c[i]
else if a[i] = 0 then
w[i] := w[b[i]] + c[i]
else
10.
11.
12.
13.
14.
15.
16.
17.
18.
w[i] := max(w[a[i]], w[b[i]]) + c[i]
w[0] := -∞
best := 0
sec_best := 0
for i := 1 to n do
if w[i] > w[best] then
sec_best := best
best := i
else if w[i] > w[sec_best] then
19.
sec_best := i
20. wypisz(best, sec_best)
Opracowanie SKO: Duchoskoczki
1/1

Podobne dokumenty