CSES - Collecting Numbers II | Thu thập số II

View as PDF



Authors:
Problem types
Points: 1500 (p) Time limit: 1.0s Memory limit: 512M Input: stdin Output: stdout

You are given an array that contains each number between \(1…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

  • 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,\ldots,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.

Output

  • Print \(m\) integers: the number of rounds after each swap.

Constraints

  • \(1 \leq n,m \leq 2\cdot 10^5\)
  • \(1 \leq a,b \leq n\)

Example

Sample input

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

Sample output

2  
3  
4


Comments (2)

Most recent
Loading comments...