CF1823B Sort with Step
题目描述
给定一个 $1$ 到 $n$ 的排列 $p$ 和一个正整数 $k$。
你可以对 $p$ 进行若干次操作,每次操作交换 $p_i$ 和 $p_j$,其中 $|i-j|=k$。你的目标是使得 $p$ 变为升序。
除此之外,在开始你的操作之前,你还可以**预先交换**任意两个 $p_i$ 和 $p_j$ 一次。
你的任务是判断:
1. 能否在不用预先交换的情况下,使得 $p$ 变为升序;
2. 如果不能,能否在预先交换一次的情况下,使得 $p$ 变为升序。
输入格式
本题有**多组数据**。第一行输入数据组数 $t$($1\le t\le10^4$)。
对于每组数据,第一行输入 $n$ 和 $k$,第二行输入 $n$ 个整数,其中第 $i$ 个整数表示 $p_i$。
输出格式
对于每组数据:
- 如果满足条件 1 输出一行 `0`;
- 如果不满足条件 1 但满足条件 2 输出一行 `1`;
- 如果条件 1, 2 都不满足输出一行 `-1`。
说明/提示
$1\le t\le10^4$,$2\le n\le2\times10^5$,$1\le k\le n-1$,$1\le p_i\le n$。
每组数据的 $n$ 的总和 $\sum n\le2\times10^5$。