#968. K-交换

K-交换

题目描述

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

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

  • 选择一个满足 1iNK1 \le i \le N-K 的整数 ii,交换 aia_iai+Ka_{i+K} 的值。

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

输入格式

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

第二行包含 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_1a3a_3。序列变为 (1,4,3,3,4)(1, 4, 3, 3, 4)
    • 选择 i=2i=2,交换 a2a_2a4a_4。序列变为 (1,3,3,4,4)(1, 3, 3, 4, 4)。 序列已变为升序。
  • 在第三个样例中,序列本身已经是升序的,不需要任何操作。

数据范围

对于所有测试点,保证:

  • 2N2×1052 \le N \le 2 \times 10^5
  • 1KN11 \le K \le N-1
  • 1ai1091 \le a_i \le 10^9
  • 保证所有的输入值均为整数。