CSES - Datatähti 2024 alku - Käännöt
  • 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