CF1012E.Cycle sort

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array of nn positive integers a1,a2,,ana_1, a_2, \dots, a_n . You can perform the following operation any number of times: select several distinct indices i1,i2,,iki_1, i_2, \dots, i_k ( 1ijn1 \le i_j \le n ) and move the number standing at the position i1i_1 to the position i2i_2 , the number at the position i2i_2 to the position i3i_3 , ..., the number at the position iki_k to the position i1i_1 . In other words, the operation cyclically shifts elements: i1i2iki1i_1 \to i_2 \to \ldots i_k \to i_1 .

For example, if you have n=4n=4 , an array a1=10,a2=20,a3=30,a4=40a_1=10, a_2=20, a_3=30, a_4=40 , and you choose three indices i1=2i_1=2 , i2=1i_2=1 , i3=4i_3=4 , then the resulting array would become a1=20,a2=40,a3=30,a4=10a_1=20, a_2=40, a_3=30, a_4=10 .

Your goal is to make the array sorted in non-decreasing order with the minimum number of operations. The additional constraint is that the sum of cycle lengths over all operations should be less than or equal to a number ss . If it's impossible to sort the array while satisfying that constraint, your solution should report that as well.

输入格式

The first line of the input contains two integers nn and ss ( 1n2000001 \leq n \leq 200\,000 , 0s2000000 \leq s \leq 200\,000 )—the number of elements in the array and the upper bound on the sum of cycle lengths.

The next line contains nn integers a1,a2,,ana_1, a_2, \dots, a_n —elements of the array ( 1ai1091 \leq a_i \leq 10^9 ).

输出格式

If it's impossible to sort the array using cycles of total length not exceeding ss , print a single number "-1" (quotes for clarity).

Otherwise, print a single number qq — the minimum number of operations required to sort the array.

On the next 2q2 \cdot q lines print descriptions of operations in the order they are applied to the array. The description of ii -th operation begins with a single line containing one integer kk ( 1kn1 \le k \le n )—the length of the cycle (that is, the number of selected indices). The next line should contain kk distinct integers i1,i2,,iki_1, i_2, \dots, i_k ( 1ijn1 \le i_j \le n )—the indices of the cycle.

The sum of lengths of these cycles should be less than or equal to ss , and the array should be sorted after applying these qq operations.

If there are several possible answers with the optimal qq , print any of them.

输入输出样例

  • 输入#1

    5 5
    3 2 3 1 1
    

    输出#1

    1
    5
    1 4 2 3 5 
    
  • 输入#2

    4 3
    2 1 4 3
    

    输出#2

    -1
  • 输入#3

    2 0
    2 2
    

    输出#3

    0
    

说明/提示

In the first example, it's also possible to sort the array with two operations of total length 5: first apply the cycle 1411 \to 4 \to 1 (of length 2), then apply the cycle 23522 \to 3 \to 5 \to 2 (of length 3). However, it would be wrong answer as you're asked to use the minimal possible number of operations, which is 1 in that case.

In the second example, it's possible to the sort the array with two cycles of total length 4 ( 1211 \to 2 \to 1 and 3433 \to 4 \to 3 ). However, it's impossible to achieve the same using shorter cycles, which is required by s=3s=3 .

In the third example, the array is already sorted, so no operations are needed. Total length of empty set of cycles is considered to be zero.

首页