- Language:
- Time limit: 1.00 s
- Memory limit: 512 MB
Harjoittelet taikatemppua, jossa järjestät korttipakan "sekoittamalla" sitä. Tempussa voit tehdä kahdenlaisia operaatioita:
- Operaatio A: Nosta pakan päältä a korttia (\lfloor n/3 \rfloor \leq a \leq \lceil 2n/3 \rceil) ja laita ne pakan pohjalle.
- Operaatio B: Nosta pakan päältä a korttia (\lfloor n/3 \rfloor \leq a \leq \lceil 2n/3 \rceil). Sitten laita nostetuista korteista b alimmaista korttia (\lfloor a/3 \rfloor \leq b \leq \lceil 2a/3 \rceil) pakan pohjalle ja jäljelle jääneet a-b korttia pakan päälle.
Operaatiot on esitetty alla olevassa kuvassa.
Tehtäväsi on etsiä jokin lista operaatioita, jotka järjestävät korttipakan. Pakka tulee järjestää niin, että pienin kortti on ylimpänä ja suurin kortti on alimpana.
Merkintä \lfloor x\rfloor tarkoittaa lukua x pyöristettynä alaspäin kokonaisluvuksi ja merkintä \lceil x\rceil lukua x pyöristettynä ylöspäin kokonaisluvuksi.
Syöte
Ensimmäisellä rivillä on kaksi kokonaislukua n ja m: korttien määrä ja operaatioiden enimmäismäärä. Kortit on numeroitu 1,2,\dots,n.
Toisella rivillä on n kokonaislukua: korttien järjestys. Kortit on ilmoitettu järjestyksessä ylimmästä alimpaan.
Tuloste
Tulosta ensin kokonaisluku k: operaatioiden määrä. Tulosta sitten k riviä, joista jokaisella on operaation kuvaus muodossa "A a" tai "B a b".
Ratkaisussa saa olla enintään m operaatiota. Voit tulostaa minkä tahansa kelvollisen ratkaisun.
Esimerkki
Syöte:
8 100000 8 3 6 7 4 1 2 5
Tuloste:
3 B 4 2 A 3 B 6 4
Selitys: Tässä operaatiot järjestävät pakan seuraavasti:
- Alkutilanne: [8,3,6,7,4,1,2,5]
- Ensimmäinen operaatio: [8,3,4,1,2,5,6,7]
- Toinen operaatio: [1,2,5,6,7,8,3,4]
- Kolmas operaatio: [1,2,3,4,5,6,7,8]
Pisteytys
| Osatehtävä | Rajoitukset | Pisteet |
|---|---|---|
| 1 | 1 \le n \le 8, m=10^5 | 16 |
| 2 | 1 \le n \le 100, m=10^5 | 23 |
| 3 | 1 \le n \le 500, m=10^5 | 25 |
| 4 | 1 \le n \le 500, m=5000 | 36 |
