• Time limit: 1.00 s
  • Memory limit: 512 MB

Lista sisältää kokonaisluvut 1,2,\dots,n, ja siihen suoritetaan m hakua, jossa haetaan tietty luku listalta. Kussakin haussa listaa käydään läpi vasemmalta oikealle, kunnes haettava luku löytyy.

Haun kustannus on yhtä suuri kuin niiden lukujen määrä, jotka käydään läpi haun aikana. Esimerkiksi kun lista on [1,2,4,3] ja haettava luku on 4, haun kustannus on 3, koska haussa käydään läpi luvut 1, 2 ja 4.

Tehtäväsi on valita listan luvuille järjestys, jossa hakujen kokonaiskustannus eli kustannusten summa on mahdollisimman pieni.

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 ensimmäiselle riville pienin mahdollinen hakujen kokonaiskustannus.

Tulosta toiselle riville esimerkki tavasta järjestää lista niin, että tämä kokonaiskustannus toteutuu. Voit tulostaa minkä tahansa kelvollisen ratkaisun.

Esimerkki

Syöte:

4 8
1 2 1 1 4 4 2 1

Tuloste:

14
1 2 4 3

Selitys: Kun listan järjestys on [1,2,4,3], kustannukset ovat seuraavat:

  • Luvun 1 hauista tulee kustannus 4 \cdot 1 = 4.
  • Luvun 2 hauista tulee kustannus 2 \cdot 2 = 4.
  • Luvun 3 hauista tulee kustannus 0 \cdot 4 = 0.
  • Luvun 4 hauista tulee kustannus 2 \cdot 3 = 6.

Tästä saadaan kokonaiskustannus 4+4+0+6=14, joka on pienin mahdollinen.

Arvostelu

Jokaisessa testissä 1 \le n \le 100 ja 1 \le m \le 1000. Saat tehtävästä 100 pistettä, jos koodisi tuottaa oikean tuloksen kaikissa testeissä.