CF1427D.Unshuffling a Deck
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a deck of n cards numbered from 1 to n (not necessarily in this order in the deck). You have to sort the deck by repeating the following operation.
- Choose 2≤k≤n and split the deck in k nonempty contiguous parts D1,D2,…,Dk ( D1 contains the first ∣D1∣ cards of the deck, D2 contains the following ∣D2∣ cards and so on). Then reverse the order of the parts, transforming the deck into Dk,Dk−1,…,D2,D1 (so, the first ∣Dk∣ cards of the new deck are Dk , the following ∣Dk−1∣ cards are Dk−1 and so on). The internal order of each packet of cards Di is unchanged by the operation.
You have to obtain a sorted deck (i.e., a deck where the first card is 1 , the second is 2 and so on) performing at most n operations. It can be proven that it is always possible to sort the deck performing at most n operations.
Examples of operation: The following are three examples of valid operations (on three decks with different sizes).
- If the deck is [3 6 2 1 4 5 7] (so 3 is the first card and 7 is the last card), we may apply the operation with k=4 and D1= [3 6], D2= [2 1 4], D3= [5], D4= [7]. Doing so, the deck becomes [7 5 2 1 4 3 6].
- If the deck is [3 1 2], we may apply the operation with k=3 and D1= [3], D2= [1], D3= [2]. Doing so, the deck becomes [2 1 3].
- If the deck is [5 1 2 4 3 6], we may apply the operation with k=2 and D1= [5 1], D2= [2 4 3 6]. Doing so, the deck becomes [2 4 3 6 5 1].
输入格式
The first line of the input contains one integer n ( 1≤n≤52 ) — the number of cards in the deck.
The second line contains n integers c1,c2,…,cn — the cards in the deck. The first card is c1 , the second is c2 and so on.
It is guaranteed that for all i=1,…,n there is exactly one j∈{1,…,n} such that cj=i .
输出格式
On the first line, print the number q of operations you perform (it must hold 0≤q≤n ).
Then, print q lines, each describing one operation.
To describe an operation, print on a single line the number k of parts you are going to split the deck in, followed by the size of the k parts: ∣D1∣,∣D2∣,…,∣Dk∣ .
It must hold 2≤k≤n , and ∣Di∣≥1 for all i=1,…,k , and ∣D1∣+∣D2∣+⋯+∣Dk∣=n .
It can be proven that it is always possible to sort the deck performing at most n operations. If there are several ways to sort the deck you can output any of them.
输入输出样例
输入#1
4 3 1 2 4
输出#1
2 3 1 2 1 2 1 3
输入#2
6 6 5 4 3 2 1
输出#2
1 6 1 1 1 1 1 1
输入#3
1 1
输出#3
0
说明/提示
Explanation of the first testcase: Initially the deck is [3 1 2 4].
- The first operation splits the deck as [(3) (1 2) (4)] and then transforms it into [4 1 2 3].
- The second operation splits the deck as [(4) (1 2 3)] and then transforms it into [1 2 3 4].
Explanation of the second testcase: Initially the deck is [6 5 4 3 2 1]. - The first (and only) operation splits the deck as [(6) (5) (4) (3) (2) (1)] and then transforms it into [1 2 3 4 5 6].