CSES - Datatähti 2024 qualification mirror - Käännöt
  • Language:
  • Time limit: 1.00 s
  • Memory limit: 512 MB

Annettuna on lista luvuista 1,2,,n1,2,\dots,n jossain järjestyksessä. Voit tehdä operaatioita, joissa valitset listasta kk 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 nn ja kk: listan pituus ja käännön pituus.

Toisella rivillä on nn kokonaislukua a1,a2,,ana_1,a_2,\dots,a_n: listan sisältö alussa. Jokainen luku 1,2,,n1,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 mm: operaatioiden määrä.

Tulosta tämän jälkeen kolmannelle riville mm kokonaislukua, jotka kuvaavat operaatiot. Luku xx tarkoittaa operaatiota, jossa listan sisältö kohdasta axa_x kohtaan ax+k1a_{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 10610^6 operaatiota.

Esimerkki

Syöte:

5 3
3 4 1 2 5

Tuloste:

YES
2
2 1

Osatehtävä 1 (13 pistettä)

  • 5n1005 \le n \le 100
  • k=2k = 2

Osatehtävä 2 (19 pistettä)

  • 5n5005 \le n \le 500
  • k=3k = 3

Osatehtävä 3 (33 pistettä)

  • 5n5005 \le n \le 500
  • k=4k = 4

Osatehtävä 4 (35 pistettä)

  • 5n5005 \le n \le 500
  • k=5k = 5