





Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2025
Problem description
Mogiłkowo, 1 mila
– Miasteczko! Pójdziemy tędy! – z radością wykrzyknął Wirt, patrząc na litery wyryte w drewnianej tabliczce.
– Tak, kierunek Mogiłkowo – przytaknął Greg, trzymając pod pachą żabusia o imieniu Wirt Junior.
Bracia ruszyli w kierunku wskazywanym przez tabliczkę i wkrótce dotarli do cichego miasteczka… może nawet zbyt cichego.
– Słyszysz ten śpiew? – zapytał Greg, wskazując palcem na starą stodołę, z której dochodziły radosne głosy.
Kiedy chłopcy uchylili drewniane drzwi, ich oczom ukazały się postacie w dyniowych strojach, tańczące wokół wystrojonego słupa. W momencie, gdy weszli do środka, śmiechy i muzyka nagle ucichły, a wszyscy zwrócili się w stronę intruzów.
– Powiedzcie mi, chłopcy, jakim cudem trafiliście do Mogiłkowa? – zapytał największy z dyniaków, wystrojony w kapelusz z jesiennych liści.
– No… więc szukaliśmy drogi do domu. Przyszliśmy przez las i zobaczyliśmy wasze pola, no i pomyśleliśmy: Hej, to zwyczajne miasteczko ze zwykłymi ludźmi. A potem usłyszeliśmy śpiew w stodole… i… czy możemy już sobie iść? – Wirt mówił szybko, z nerwowym uśmiechem.
Największy dyniak westchnął.
– Bardzo mi przykro, dzieciaczki, ale za swoje występki będziecie musieli odpokutować. Z mocy prawa Mogiłkowej Izby Handlowej, uznaję was winnymi wtargnięcia, zakłócania porządku i… morderstwa.
– M-morderstwa?! – wykrzyknął przerażony Wirt.
– No dobra, przesadziłem z tym morderstwem – odparł dyniak, machając ręką. – Ale za pozostałe występki skazuję was na kilka godzin prac społecznych.
I tak, zgodnie z rozkazem mieszkańców, bracia zabrali się do pracy. W Mogiłkowie nic nie jest zwyczajne, więc ich zadanie również okazało się osobliwe. Greg i Wirt musieli uporządkować stos trumienek, w których dyniowi mieszkańcy odpoczywają po długich tańcach w stodole. W końcu każdy ma prawo do wygodnego relaksu, a dyniowe buty bywają ciężkie dla nóg…
Dane jest N trumienek, każda o wadze w1, w2, ..., wN, ułożonych w stosie.
Bracia otrzymali listę M zamówień. Każde zamówienie wskazuje trumienkę ai, którą należy wyjąć ze stosu i przesunąć na wierzch.
Aby zrealizować zamówienie na trumnę ai, bracia muszą:
Podnieść wszystkie trumienki leżące powyżej trumny ai, dźwigając ich łączną wagę.
Wyjąć trumnę ai i przenieść ją na szczyt stosu.
Pozostałe podniesione trumny odłożyć w tej samej kolejności, co wcześniej.
Każda trumna może być zamawiana dowolnie wiele razy.
Początkowe ułożenie stosu może być dowolne.
Pomóż Wirtowi i Gregowi tak ułożyć początkowy stos, aby suma mas podniesionych trumien podczas realizacji wszystkich zamówień była jak najmniejsza.
Wejście
W pierwszym wierszu wejścia znajdują się dwie liczby, N (2 ≤ N ≤ 500) oraz M (1 ≤ M ≤ 1000), oddzielone spacją.
W drugim wierszu znajduje się ciąg wag: w1, …, wN (1 ≤ wi ≤ 100).
W trzecim, ostatnim wierszu wejścia znajduje się ciąg zamówień: a1, …, aM (1 ≤ ai ≤ N).
Wyjście
W jedynym wierszu wyjścia powinna się znaleźć minimalna suma wag podniesionych przez chłopców trumienek.
Ograniczenia
2 ≤ N ≤ 500,
1 ≤ M ≤ 1000,
1 ≤ wi ≤ 100.
Przykład
Wejście | Wyjście | Wyjaśnienie |
|
|
Początkowa konfiguracja stosu: 2 1 3 4 (lewa strona to szczyt stosu). Najpierw zdejmą trumnę numer 2 ze szczytu stosu, kosztem 0 i od razu odłożą ją z powrotem na szczyt. Następnie przeniosą trumnę 1 na szczyt, podnosząc trumnę 2 o wadze 30. Kolejne podniesienie trumny 1 nic nie kosztuje. Następnie, aby przenieść trumnę 3 na wierzch, podniosą trumny 1 i 2, które ważą łącznie 40. Poniesienie trumny 2 wymaga podniesienia trumien 1 i 3, o łącznej wadze 30. Wybrana przez Wirta i Grega początkowa konfiguracja jest optymalna, co można sprawdzić. |
Wejście | Wyjście | Wyjaśnienie |
|
|
Wirt i Greg mogą ułożyć stos w taki sposób: 3 2 4 5 1, dzięki czemu nie będą musieli dźwigać pozostałych trumien. |