#3246. 收集数字 II

收集数字 II

题目背景

翻译自 CSES-2217 题。

题目描述

给你一个长度为 nn 的数组,其中 1n1 \dots n 之间的每个数字都恰好出现一次。

你的任务是按【递增顺序】收集从 11nn 的所有数字。每一轮,你都要从左到右遍历整个数组,在遍历过程中收集尽可能多的数字。

现在给定 mm 次操作,每次操作交换数组中两个位置上的数字。请你输出【每次操作之后】所需要的轮数。

输入格式

第一行两个整数 nnmm,分别代表数组大小和操作次数。

第二行 nn 个整数 x1,x2,,xnx_1, x_2, \dots, x_n,代表数组中的数字。

接下来 mm 行描述操作,每行两个整数 aabb,代表位置 aa 和位置 bb 上的数字被交换。

输出格式

输出 mm 行,每行一个整数,表示对应操作之后所需的轮数。

样例

5 3
4 2 1 5 3
2 3
1 5
2 3
2
3
4

样例解释

初始数组为 [4,2,1,5,3][4,2,1,5,3]

  • 第一次操作交换位置 2,32,3,数组变为 [4,1,2,5,3][4,1,2,5,3]:第一轮收集 1,2,31,2,3,第二轮收集 4,54,5,共 22 轮;
  • 第二次操作交换位置 1,51,5,数组变为 [3,1,2,5,4][3,1,2,5,4]:共需 33 轮;
  • 第三次操作交换位置 2,32,3,数组变为 [3,2,1,5,4][3,2,1,5,4]:共需 44 轮。

数据范围

  • 对于 20%20\% 的测试点,保证 1n,m1001 \le n, m \le 100
  • 对于 50%50\% 的测试点,保证 1n,m30001 \le n, m \le 3000
  • 对于 100%100\% 的测试点,保证 1n,m2×1051 \le n, m \le 2 \times 10^51a,bn1 \le a, b \le n