- Time limit: 1.00 s
- Memory limit: 512 MB
Kuten tehtävässä A, sinun tulee etsiä pienin kokonaiskustannus hauille. Kuitenkin saat järjestää listan kahdesti: ensin ennen hakuja ja sitten jossain vaiheessa myöhemmin kahden haun välissä. Haut suoritetaan siinä järjestyksessä kuin ne on annettu.
Tehtäväsi on ilmoittaa pienin hakujen kokonaiskustannus vasemmalta oikealle jokaiselle muutoskohdalle, jossa voit järjestää listan uudestaan.
Syöte
Ensimmäisellä rivillä on kaksi kokonaislukua n ja m: listan koko ja hakujen määrä.
Toisella rivillä on m lukua: haettavat luvut. Jokainen haettava luku on listalla.
Tuloste
Tulosta m-1 lukua: pienin kokonaiskustannus jokaiselle muutoskohdalle.
Esimerkki
Syöte:
4 8 1 2 1 1 4 4 2 1
Tuloste:
14 13 13 12 14 13 14
Selitys: Esimerkiksi kokonaiskustannus 12 voidaan saada seuraavasti:
- Valitaan ensin listan järjestys [1,2,4,3].
- Suoritetaan haut [1,2,1,1] (kustannus 1+2+1+1=5).
- Valitaan uusi listan järjestys [4,1,2,3].
- Suoritetaan haut [4,4,2,1] (kustannus 1+1+3+2=7).
Osatehtävä 1 (20 pistettä)
- 1 \le n \le 100
- 1 \le m \le 1000
Osatehtävä 2 (30 pistettä)
- 1 \le n \le 10^5
- 1 \le m \le 1000
Osatehtävä 3 (50 pistettä)
- 1 \le n \le 10^5
- 1 \le m \le 10^5
