- Language:
- Time limit: 1.00 s
- Memory limit: 512 MB
Annettuna on lista luvuista 1,2,\dots,n jossain järjestyksessä. Voit tehdä operaatioita, joissa valitset listasta k peräkkäistä lukua ja käännät ne ympäri.
Onko lista mahdollista järjestää kasvavaan järjestykseen? Jos on, niin millä operaatioilla se onnistuu?
Syöte
Ensimmäisellä rivillä on kaksi kokonaislukua n ja k: listan pituus ja käännön pituus.
Toisella rivillä on n kokonaislukua a_1,a_2,\dots,a_n: listan sisältö alussa. Jokainen luku 1,2,\dots,n esiintyy listassa täsmälleen kerran.
Tuloste
Tulosta ensin rivi "YES", jos luvut voidaan järjestää, tai "NO" muuten.
Jos luvut voidaan järjestää, tulosta seuraavalle riville kokonaisluku m: operaatioiden määrä.
Tulosta tämän jälkeen kolmannelle riville m kokonaislukua, jotka kuvaavat operaatiot. Luku x tarkoittaa operaatiota, jossa listan sisältö kohdasta a_x kohtaan a_{x+k-1} käännetään ympäri. Kohtien on oltava listan sisällä.
Jos ratkaisuja on useita, voit tulostaa niistä minkä tahansa. Ratkaisussasi ei kuitenkaan saa olla yli 10^6 operaatiota.
Esimerkki
Syöte:
5 3 3 4 1 2 5
Tuloste:
YES 2 2 1
Osatehtävä 1 (13 pistettä)
- 5 \le n \le 100
- k = 2
Osatehtävä 2 (19 pistettä)
- 5 \le n \le 500
- k = 3
Osatehtävä 3 (33 pistettä)
- 5 \le n \le 500
- k = 4
Osatehtävä 4 (35 pistettä)
- 5 \le n \le 500
- k = 5