QOJ.ac

QOJ

Límite de tiempo: 1 s Límite de memoria: 256 MB Puntuación total: 100

#962. Podziękowania dla MikeMirzayanov

Estadísticas

Otrzymujesz talię $n$ kart ponumerowanych od $1$ do $n$ (niekoniecznie w tej kolejności). Musisz posortować talię, powtarzając następującą operację.

Wybierz $2 \le k \le n$ i podziel talię na $k$ niepustych, spójnych części $D_1, D_2, \dots, D_k$ ($D_1$ zawiera pierwsze $|D_1|$ kart talii, $D_2$ zawiera kolejne $|D_2|$ kart i tak dalej). Następnie odwróć kolejność części, przekształcając talię w $D_k, D_{k-1}, \dots, D_2, D_1$ (tak, że pierwsze $|D_k|$ kart nowej talii to $D_k$, kolejne $|D_{k-1}|$ kart to $D_{k-1}$ i tak dalej). Wewnętrzna kolejność kart w każdej paczce $D_i$ pozostaje niezmieniona przez operację.

Musisz uzyskać posortowaną talię (czyli taką, w której pierwsza karta to $1$, druga to $2$ itd.), wykonując co najwyżej $120$ operacji. Można udowodnić, że zawsze możliwe jest posortowanie talii w co najwyżej $120$ operacjach przy podanych ograniczeniach.

Przykłady operacji: poniżej znajdują się trzy przykłady poprawnych operacji (na trzech taliach o różnych rozmiarach).

  • Jeśli talia to $[3\ 6\ 2\ 1\ 4\ 5\ 7]$ (gdzie $3$ jest pierwszą kartą, a $7$ ostatnią), możemy wykonać operację dla $k = 4$ oraz $D_1 = [3\ 6]$, $D_2 = [2\ 1\ 4]$, $D_3 = [5]$, $D_4 = [7]$. W rezultacie talia staje się $[7\ 5\ 2\ 1\ 4\ 3\ 6]$.
  • Jeśli talia to $[3\ 1\ 2]$, możemy wykonać operację dla $k = 3$ oraz $D_1 = [3]$, $D_2 = [1]$, $D_3 = [2]$. W rezultacie talia staje się $[2\ 1\ 3]$.
  • Jeśli talia to $[5\ 1\ 2\ 4\ 3\ 6]$, możemy wykonać operację dla $k = 2$ oraz $D_1 = [5\ 1]$, $D_2 = [2\ 4\ 3\ 6]$. W rezultacie talia staje się $[2\ 4\ 3\ 6\ 5\ 1]$.

Wejście

Pierwsza linia wejścia zawiera jedną liczbę całkowitą $n$ ($1 \le n \le 20\,000$) — liczbę kart w talii. Druga linia zawiera $n$ liczb całkowitych $c_1, c_2, \dots, c_n$ — karty w talii. Pierwsza karta to $c_1$, druga to $c_2$ i tak dalej. Gwarantuje się, że dla każdego $i = 1, \dots, n$ istnieje dokładnie jedno $j \in \{1, \dots, n\}$ takie, że $c_j = i$.

Wyjście

W pierwszej linii wypisz liczbę $q$ wykonanych operacji (musi zachodzić $0 \le q \le 120$). Następnie wypisz $q$ linii, z których każda opisuje jedną operację. Aby opisać operację, wypisz w pojedynczej linii liczbę $k$ części, na które dzielisz talię, a następnie rozmiary tych $k$ części: $|D_1|, |D_2|, \dots, |D_k|$. Musi zachodzić $2 \le k \le n$, $|D_i| \ge 1$ dla wszystkich $i = 1, \dots, k$ oraz $|D_1| + |D_2| + \dots + |D_k| = n$.

Można udowodnić, że zawsze możliwe jest posortowanie talii w co najwyżej $120$ operacjach przy podanych ograniczeniach. Jeśli istnieje kilka sposobów na posortowanie talii, możesz wypisać dowolny z nich. Zauważ, że nie musisz minimalizować $q$.

Przykład

Przykład 1

4
3 1 2 4
2
3 1 2 1
2 1 3

Przykład 2

6
6 5 4 3 2 1
1
6 1 1 1 1 1 1

Przykład 3

1
1
0

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#613Editorial Open集训队作业 解题报告 by 王一策Qingyu2026-01-02 23:10:06 Download
#592Editorial Open集训队作业 解题报告 by 孙梓航Qingyu2026-01-02 22:41:14 Download
#322EditorialOpen题解jiangly2025-12-14 07:04:55View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.