CF1830E Bully Sort
Description
On a permutation $ p $ of length $ n $ , we define a bully swap as follows:
- Let $ i $ be the index of the largest element $ p_i $ such that $ p_i \neq i $ .
- Let $ j $ be the index of the smallest element $ p_j $ such that $ i < j $ .
- Swap $ p_i $ and $ p_j $ .
We define $ f(p) $ as the number of bully swaps we need to perform until $ p $ becomes sorted. Note that if $ p $ is the identity permutation, $ f(p)=0 $ .
You are given $ n $ and a permutation $ p $ of length $ n $ . You need to process the following $ q $ updates.
In each update, you are given two integers $ x $ and $ y $ . You will swap $ p_x $ and $ p_y $ and then find the value of $ f(p) $ .
Note that the updates are persistent. Changes made to the permutation $ p $ will apply when processing future updates.
Input Format
The first line of the input contains two integers $ n $ and $ q $ ( $ 2 \le n \le 5 \cdot 10^5 $ , $ 1 \le q \le 5 \cdot 10^4 $ ) — the length of the permutation and the number of updates.
The second line of input contains $ n $ integer $ p_1,p_2,\ldots,p_n $ ( $ 1 \leq p_i \leq n $ ) — the permutation $ p $ . All elements of $ p $ are distinct.
The $ i $ -th of the next $ q $ lines of input contains two integers $ x_i $ and $ y_i $ ( $ 1 \le x_i < y_i \le n $ ) — describing the $ i $ -th update.
Output Format
After each update, output $ f(p) $ .
Explanation/Hint
After the first update, we have $ f(p)=5 $ . The $ 5 $ bully swaps are illustrated below.
- $ [\mathbf{1}, 2, \mathbf{8}, 5, 3, 4, 7, 6] $ ,
- $ [1, 2, \mathbf{3}, 5, \mathbf{8}, 4, 7, 6] $ ,
- $ [1, 2, 3, 5, \mathbf{4}, \mathbf{8}, 7, 6] $ ,
- $ [1, 2, 3, 5, 4, \mathbf{6}, 7, \mathbf{8}] $ ,
- $ [1, 2, 3, \mathbf{4}, \mathbf{5}, 6, 7, 8] $ .