P16595 [GKS 2016 #E] Sorting Array

Description

We are in the process of creating a somewhat esoteric sorting algorithm to sort an array $A$ of all integers between $1$ and $N$. The integers in $A$ can start in an arbitrary order. Besides the input order, the algorithm depends on two integers $P$ (which would be at most $3$) and $K$. Here is how the algorithms works: 1. Partition $A$ into $K$ disjoint non-empty subarrays $A_1$, $A_2$, ..., $A_K$ such that such that concatenating them in order $A_1A_2 \dots A_K$ produces $A$. 2. Sort each subarray individually. 3. Choose up to $P$ of the subarrays, and swap any two of them any number of times. For example, consider $A = [1 \ 5 \ 4 \ 3 \ 2]$ and $P = 2$. A possible partition into $K = 4$ disjoint subarrays is: ``` A1 = [1] A2 = [5] A3 = [4] A4 = [3 2] After Sorting Each Subarray: A1 = [1] A2 = [5] A3 = [4] A4 = [2 3] After swapping A4 and A2: A1 = [1] A2 = [2 3] A3 = [4] A4 = [5] ``` We want to show the algorithm is good for distributed environments by finding, for a fixed input and value of $P$, the maximum number of partitions $K$ such that, choosing the partitions and swaps wisely, we can achieve a sorting of the original order. Can you help us to calculate that $K$?

Input Format

The first line of the input gives the number of test cases, $T$. $T$ test cases follow. Each test case consists of two lines. The first line contains two integers $N$ and $P$, as described above. The second line of the test case contains $N$ integers $X_1$, $X_2$, ..., $X_N$ represting array $A$.

Output Format

For each test case, output one line containing Case #x: y, where $x$ is the test case number (starting from 1) and $y$ is the maximum possible value for the parameter $K$.

Explanation/Hint

Case #1: Same as walk through in the statement. Case #2: $[4 \ 5] \ [1 \ 2 \ 3]$ Swap the $2$ blocks: $[1 \ 2 \ 3] \ [4 \ 5]$ Case #3: $[6] \ [3 \ 5 \ 2 \ 4] \ [1]$ Sort $[3 \ 5 \ 2 \ 4]$, then swap $[6]$ and $[1]$, we get: $[1] \ [2 \ 3 \ 4 \ 5] \ [6]$ Case #4: $[4 \ 5] \ [1] \ [2 \ 3]$ Swap $[4 \ 5]$ and $[1]$, then swap $[2 \ 3]$ and $[4 \ 5]$: $[1] \ [2 \ 3] \ [4 \ 5]$ Case #5: $[1] \ [2] \ [6] \ [4] \ [5] \ [3]$ Swap $[6]$ and $[3]$: $[1] \ [2] \ [3] \ [4] \ [5] \ [6]$ **Note**: First $3$ sample cases would not appear in the Large dataset and the last $2$ sample cases would not appear in the Small dataset. ### Limits $1 \le T \le 100$. $1 \le N \le 5000$. $1 \le X_i \le N$, for all $i$. $X_i \ne X_j$ for all $i \ne j$. **Small dataset (Test set 1 - Visible)** $P = 2$. **Large dataset (Test set 2 - Hidden)** $P = 3$.