6706.Collecting Numbers II

Time Limit: 1s Memory Limit: 512MB

You are given an array that contains each number between $1 \dots n$ exactly once. Your task is to collect the numbers from $1$ to $n$ in increasing order.

On each round, you go through the array from left to right and collect as many numbers as possible.

Given $m$ operations that swap two numbers in the array, your task is to report the number of rounds after each operation.

Input Format(From the terminal/stdin)

The first line has two integers $n$ and $m$ : the array size and the number of operations.

The next line has $n$ integers $x_1,x_2,\dots,x_n$ : the numbers in the array.

Finally, there are $m$ lines that describe the operations. Each line has two integers $a$ and $b$ : the numbers at positions $a$ and $b$ are swapped.

  • $1 \le n, m \le 2 \cdot 10^5$
  • $1 \le a,b \le n$

Output Format(To the terminal/stdout)

Print $m$ integers: the number of rounds after each swap.

Sample Input

Copy
5 3
4 2 1 5 3
2 3
1 5
2 3
 · \n
 · · · · \n
 · \n
 · \n
 · \n

Sample Output

Copy
2
3
4
 \n
 \n
 \n
Source: CSES, Sorting and Searching, 2217

Submit

请先 登录

© 2025 FAQs