Tales of a Sort
Contest: Codeforces Round 890 (Div. 2) supported by Constructor Institute
Difficulty rating: 800
Tags: implementation

Alphen has an array of positive integers $$$a$$$ of length $$$n$$$.

Alphen can perform the following operation:

- For all $$$i$$$ from $$$1$$$ to $$$n$$$, replace $$$a_i$$$ with $$$\max(0, a_i - 1)$$$.

Alphen will perform the above operation until $$$a$$$ is sorted, that is $$$a$$$ satisfies $$$a_1 \leq a_2 \leq \ldots \leq a_n$$$. How many operations will Alphen perform? Under the constraints of the problem, it can be proven that Alphen will perform a finite number of operations.

Input format:
Each test contains multiple test cases. The first line of input contains a single integer $$$t$$$ ($$$1 \le t \le 500$$$) — the number of test cases. The description of the test cases follows.

The first line of each test case contains a single integer $$$n$$$ ($$$2 \le n \le 50$$$) — the length of the array $$$a$$$.

The second line of each test case contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10 ^ 9$$$) — the elements of the array $$$a$$$.

Output format:
For each test case, output a single integer — the number of operations that Alphen will perform.

Constraints:
Time limit: 1.0 s
Memory limit: 256.0 MB

Note:
In the first test case, we have $$$a=[1,2,3]$$$. Since $$$a$$$ is already sorted, Alphen will not need to perform any operations. So, the answer is $$$0$$$.

In the second test case, we have $$$a=[2,1,2,1,2]$$$. Since $$$a$$$ is not initially sorted, Alphen will perform one operation to make $$$a=[1,0,1,0,1]$$$. After performing one operation, $$$a$$$ is still not sorted, so Alphen will perform another operation to make $$$a=[0,0,0,0,0]$$$. Since $$$a$$$ is sorted, Alphen will not perform any other operations. Since Alphen has performed two operations in total, the answer is $$$2$$$.

Example input:
7
3
1 2 3
5
2 1 2 1 2
4
3 1 5 4
2
7 7
5
4 1 3 2 5
5
2 3 1 4 5
3
1000000000 1 2

Example output:
0
2
5
0
4
3
1000000000

Editorial:
Suppose we have performed $$$k$$$ operations and have gotten the array $$$b$$$. Then $$$b_i := \max(0, a_i - k)$$$ for all $$$i$$$ from $$$1$$$ to $$$n$$$.
If $$$b$$$ is sorted, then $$$b_i \le b_{i + 1}$$$ for all $$$i$$$ from $$$1$$$ to $$$n - 1$$$. In other words, $$$\max(0, a_i - k) \le \max(0, a_{i + 1} - k)$$$. Let's find for which $$$k$$$ this inequality holds.
Suppose $$$a_i \le a_{i + 1}$$$. Then $$$\max(0, a_i - k) \le \max(0, a_{i + 1} - k)$$$ is true for any $$$k \ge 0$$$.
Now suppose $$$a_i > a_{i + 1}$$$. Then $$$\max(0, a_i - k) \le \max(0, a_{i + 1} - k)$$$ is true only if $$$k \ge a_i$$$.
For the array to be sorted after $$$k$$$ operations, $$$\max(0, a_i - k) \le \max(0, a_{i + 1} - k)$$$ must hold for all $$$1 \le i < n$$$. From the statements above, we can see that the smallest $$$k$$$ for which this is true is equal to the maximum value of $$$a_{i}$$$ over all $$$1 \le i < n$$$ such that $$$a_{i} > a_{i + 1}$$$. If no such $$$i$$$ exists, the answer is $$$0$$$, since the array is already sorted.
Complexity: $$$\mathcal{O}(n)$$$
Note: there are at least two other solutions:
• The solution above is also equivalent to finding the maximum value of $$$a_{i}$$$ over all $$$1 \le i < j \le n$$$ such that $$$a_i > a_j$$$, which leads to a $$$\mathcal{O}(n^2)$$$ solution.
• Alternatively, you can do binary search on the answer to get a $$$\mathcal{O}(n \log A)$$$ solution, where $$$A$$$ is the maximum possible value of $$$a_i$$$.