#J10019. K-交换

K-交换

题目描述

给定一个长度为 NN 的序列 A=(a1,…,aN)A=(a_1, \dots, a_N) 以及一个整数 KK。

你可以执行以下操作任意次(包括 00 次):

  • 选择一个满足 1≤i≤N−K1 \le i \le N-K 的整数 ii,交换 aia_i 和 ai+Ka_{i+K} 的值。

请判断是否可以通过上述操作将序列 AA 变为升序(非降序)排列。

输入格式

第一行包含两个正整数 NN 和 KK —— 分别表示序列的长度和交换的间隔。

第二行包含 NN 个正整数 a1,a2,…,aNa_1, a_2, \dots, a_N —— 表示序列 AA 的元素。

输出格式

如果可以通过操作使序列 AA 变为升序排列,输出 Yes;否则输出 No。

样例输入 1

5 2
3 4 1 3 4

样例输出 1

Yes

样例输入 2

5 3
3 4 1 3 4

样例输出 2

No

样例输入 3

7 5
1 2 3 4 5 5 10

样例输出 3

Yes

说明

样例解释

  • 在第一个样例中,可以通过以下操作实现升序排列:

    • 选择 i=1i=1,交换 a1a_1 和 a3a_3。序列变为 (1,4,3,3,4)(1, 4, 3, 3, 4)。
    • 选择 i=2i=2,交换 a2a_2 和 a4a_4。序列变为 (1,3,3,4,4)(1, 3, 3, 4, 4)。

    序列已变为升序。

  • 在第三个样例中,序列本身已经是升序的,不需要任何操作。

数据范围

对于所有测试点,保证:

  • 2≤N≤2×1052 \le N \le 2 \times 10^5。
  • 1≤K≤N−11 \le K \le N-1。
  • 1≤ai≤1091 \le a_i \le 10^9。
  • 保证所有的输入值均为整数。