310633: CF1863B. Split Sort

Memory Limit:256 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

B. Split Sorttime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output

You are given a permutation$^{\dagger}$ $p_1, p_2, \ldots, p_n$ of integers $1$ to $n$.

You can change the current permutation by applying the following operation several (possibly, zero) times:

  • choose some $x$ ($2 \le x \le n$);
  • create a new permutation by:
    • first, writing down all elements of $p$ that are less than $x$, without changing their order;
    • second, writing down all elements of $p$ that are greater than or equal to $x$, without changing their order;
  • replace $p$ with the newly created permutation.

For example, if the permutation used to be $[6, 4, 3, 5, 2, 1]$ and you choose $x = 4$, then you will first write down $[3, 2, 1]$, then append this with $[6, 4, 5]$. So the initial permutation will be replaced by $[3, 2, 1, 6, 4, 5]$.

Find the minimum number of operations you need to achieve $p_i = i$ for $i = 1, 2, \ldots, n$. We can show that it is always possible to do so.

$^{\dagger}$ A permutation of length $n$ is an array consisting of $n$ distinct integers from $1$ to $n$ in arbitrary order. For example, $[2,3,1,5,4]$ is a permutation, but $[1,2,2]$ is not a permutation ($2$ appears twice in the array), and $[1,3,4]$ is also not a permutation ($n=3$ but there is $4$ in the array).

Input

Each test contains multiple test cases. The first line contains the number of test cases $t$ ($1 \le t \le 1000$). The description of the test cases follows.

The first line of each test case contains one integer $n$ ($1 \le n \le 100\,000$).

The second line of each test case contains $n$ integers $p_1, p_2, \ldots, p_n$ ($1 \le p_i \le n$). It is guaranteed that $p_1, p_2, \ldots, p_n$ is a permutation.

It is guaranteed that the sum of $n$ over all test cases does not exceed $100\,000$.

Output

For each test case, output the answer on a separate line.

ExampleInput
5
1
1
2
2 1
6
6 4 3 5 2 1
3
3 1 2
19
10 19 7 1 17 11 8 5 12 9 4 18 14 2 6 15 3 16 13
Output
0
1
4
1
7
Note

In the first test case, $n = 1$ and $p_1 = 1$, so there is nothing left to do.

In the second test case, we can choose $x = 2$ and we immediately obtain $p_1 = 1$, $p_2 = 2$.

In the third test case, we can achieve the minimum number of operations in the following way:

  1. $x = 4$: $[6, 4, 3, 5, 2, 1] \rightarrow [3, 2, 1, 6, 4, 5]$;
  2. $x = 6$: $[3, 2, 1, 6, 4, 5] \rightarrow [3, 2, 1, 4, 5, 6]$;
  3. $x = 3$: $[3, 2, 1, 4, 5, 6] \rightarrow [2, 1, 3, 4, 5, 6]$;
  4. $x = 2$: $[2, 1, 3, 4, 5, 6] \rightarrow [1, 2, 3, 4, 5, 6]$.

Output

题目大意:给定一个1到n的整数排列p1, p2, …, pn。可以通过以下操作改变排列:选择一个x(2 ≤ x ≤ n),然后按照以下步骤创建新排列:首先,按原顺序写下所有小于x的元素;其次,按原顺序写下所有大于或等于x的元素;最后,用新排列替换原排列。求实现pi = i(对于i = 1, 2, …, n)所需的最小操作次数。

输入数据格式:第一行包含一个整数t(1 ≤ t ≤ 1000),表示测试用例的数量。每个测试用例包含两行,第一行包含一个整数n(1 ≤ n ≤ 100,000),第二行包含n个整数p1, p2, …, pn(1 ≤ pi ≤ n),保证p1, p2, …, pn是一个排列。所有测试用例的n之和不超过100,000。

输出数据格式:对于每个测试用例,输出一行表示答案。题目大意:给定一个1到n的整数排列p1, p2, …, pn。可以通过以下操作改变排列:选择一个x(2 ≤ x ≤ n),然后按照以下步骤创建新排列:首先,按原顺序写下所有小于x的元素;其次,按原顺序写下所有大于或等于x的元素;最后,用新排列替换原排列。求实现pi = i(对于i = 1, 2, …, n)所需的最小操作次数。 输入数据格式:第一行包含一个整数t(1 ≤ t ≤ 1000),表示测试用例的数量。每个测试用例包含两行,第一行包含一个整数n(1 ≤ n ≤ 100,000),第二行包含n个整数p1, p2, …, pn(1 ≤ pi ≤ n),保证p1, p2, …, pn是一个排列。所有测试用例的n之和不超过100,000。 输出数据格式:对于每个测试用例,输出一行表示答案。

加入题单

上一题 下一题 算法标签: