#ABC478C. 排序子数组 / Sort Subarray

排序子数组 / Sort Subarray

题目描述

给定一个长度为 NN 的整数序列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N)。

你需要对 AA 恰好执行一次以下操作。

  • 选择一个 11 到 N−K+1N-K+1 之间的整数 ii(含两端)。将 Ai,Ai+1,…,Ai+K−1A_i,A_{i+1},\ldots,A_{i+K-1} 按升序排序。更形式化地说,设 B1,B2,…,BKB_1,B_2,\ldots,B_K 是把 Ai,Ai+1,…,Ai+K−1A_i,A_{i+1},\ldots,A_{i+K-1} 按从小到大排列后得到的序列,同时对每个 1≤j≤K1\le j\le K 用 BjB_j 替换 Ai+j−1A_{i+j-1}。

判断在执行该操作后,能否使 AA 升序,即对所有 1≤i<N1\le i\lt N 都有 Ai≤Ai+1A_i\le A_{i+1}。

输入格式

输入按以下格式从标准输入读入:

  • NN KK
  • A1A_1 A2A_2 …\ldots ANA_N

输出格式

如果恰好执行一次操作后能把 AA 升序排序,则输出 Yes,否则输出 No。

9 6
1 4 1 4 2 1 3 5 6
Yes

例如,若选择 i=2i=2,则 (A2,A3,A4,A5,A6,A7)=(4,1,4,2,1,3)(A_2,A_3,A_4,A_5,A_6,A_7)=(4,1,4,2,1,3) 会被替换为 (1,1,2,3,4,4)(1,1,2,3,4,4)。操作后 AA 为 (1,1,1,2,3,4,4,5,6)(1,1,1,2,3,4,4,5,6),满足条件。

因此输出 Yes。

3 1
3 2 1
No

由于 K=1K=1,无论选择哪个 ii 执行操作,AA 都不会发生变化。因此输出 No。

30 25
1 2 2 22 14 10 14 10 18 5 15 8 17 22 10 17 11 25 13 16 9 19 26 7 11 12 23 3 30 30
Yes

数据范围

  • 1≤K<N≤2×1051\le K\lt N\le2\times10^5

  • 1≤Ai≤N (1≤i≤N)1\le A_i\le N\ (1\le i\le N)

  • 所有输入值均为整数。

  • 来源:AtCoder ABC 478 C

子任务设置

  • 子任务 1(30 分):N≤2000N \le 2000。
  • 子任务 2(70 分):无特殊限制。