CF1823B.Sort with Step

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Sort with Step

题目描述

给定一个 11nn 的排列 pp 和一个正整数 kk

你可以对 pp 进行若干次操作,每次操作交换 pip_ipjp_j,其中 ij=k|i-j|=k。你的目标是使得 pp 变为升序。

除此之外,在开始你的操作之前,你还可以预先交换任意两个 pip_ipjp_j 一次。

你的任务是判断:

  1. 能否在不用预先交换的情况下,使得 pp 变为升序;
  2. 如果不能,能否在预先交换一次的情况下,使得 pp 变为升序。

输入格式

本题有多组数据。第一行输入数据组数 tt1t1041\le t\le10^4)。

对于每组数据,第一行输入 nnkk,第二行输入 nn 个整数,其中第 ii 个整数表示 pip_i

输出格式

对于每组数据:

  • 如果满足条件 1 输出一行 0
  • 如果不满足条件 1 但满足条件 2 输出一行 1
  • 如果条件 1, 2 都不满足输出一行 -1

说明/提示

1t1041\le t\le10^42n2×1052\le n\le2\times10^51kn11\le k\le n-11pin1\le p_i\le n

每组数据的 nn 的总和 n2×105\sum n\le2\times10^5

样例

6
4 1
3 1 2 4
4 2
3 4 1 2
4 2
3 1 4 2
10 3
4 5 9 1 8 6 10 2 3 7
10 3
4 6 9 1 8 5 10 2 3 7
10 3
4 6 9 1 8 5 10 3 2 7
0
0
1
0
1
-1

在线编程 IDE

建议全屏模式获得最佳体验