Universal Cup Judging System

Universal Cup

时间限制: 1.0 s 内存限制: 1024 MB 总分: 100
统计

2077 年、作問は簡単になります。ロボットがランダムな操作を設定して問題を生成し、それを自ら解くのです。作問者は、その問題が正しいかどうかを確認するだけで済みます。

以下は 2077 年から届いた問題です:

順列 $p_1, p_2, \dots, p_n$ が与えられます。$n$ は偶数であることが保証されています。次の種類の操作のみを用いて、この順列をソートしたいです:

  • FakeSort(l,r):$r - l + 1$ が偶数であることを保証しなければなりません。$k = r - l + 1$ とすると、連続部分列 $p_l, p_{l+1}, \dots, p_r$ のうち大きい方から $k/2$ 個の要素と小さい方から $k/2$ 個の要素がそれぞれ独立にソートされます。すなわち、大きい方から $k/2$ 個の数の添字を $L_1, L_2, \dots, L_{k/2}$、小さい方から $k/2$ 個の数の添字を $S_1, S_2, \dots, S_{k/2}$ とします。まず添字 $L_1 \sim L_{k/2}$ にある数をソートし、次に添字 $S_1 \sim S_{k/2}$ にある数をソートします。

具体例を挙げます。順列を $p = \{2, 5, 7, 1, 8, 6, 4, 3\}$ とします。ここで FakeSort(2,7) を呼び出すと:

  • $k = r - l + 1 = 6$ です。連続部分列 $p_l, p_{l+1}, \dots, p_r$ は $\{5, 7, 1, 8, 6, 4\}$ であり、この列の大きい方から $3$ 個の数と小さい方から $3$ 個の数をそれぞれ独立にソートします。
  • $p = \{2, 5, \mathbf{7}, 1, \mathbf{8}, \mathbf{6}, 4, 3\}$。大きい方から $3$ 個の数が太字になっています。ソート後、それらは $p = \{2, 5, \mathbf{6}, 1, \mathbf{7}, \mathbf{8}, 4, 3\}$ になります。
  • $p = \{2, \mathbf{5}, 6, \mathbf{1}, 7, 8, \mathbf{4}, 3\}$。小さい方から $3$ 個の数が太字になっています。ソート後、それらは $p = \{2, \mathbf{1}, 6, \mathbf{4}, 7, 8, \mathbf{5}, 3\}$ になります。

したがって、$p = \{2, 5, 7, 1, 8, 6, 4, 3\}$ は FakeSort(2,7) の後に $\{2, 1, 6, 4, 7, 8, 5, 3\}$ となります。

$114$ 回以下の操作を用いて順列をソートするか、ソート不可能であると判定してください。この操作で順列をソートできるならば、$114$ 回以下の操作でソートする方法が存在することが証明できます。

入力

入力は複数のテストケースからなります。入力の最初の行には、テストケースの個数を表す整数 $T$($1 \le T \le 10^3$)が与えられます。

各テストケースについて、最初の行には順列の長さを表す偶数の整数 $n$($4 \le n \le 10^5$)が与えられます。

次の行には、ソートすべき順列を表す $n$ 個の整数 $p_1, p_2, \dots, p_n$($1 \le p_i \le n$)が与えられます。$p$ が順列であることは保証されています。

すべてのテストケースにおける $n$ の総和は $2 \times 10^5$ を超えないことが保証されます。

出力

各テストケースについて、順列をソートすることが不可能な場合は $-1$ を出力してください。

そうでない場合は、使用する操作の回数を表す整数 $k$($0 \le k \le 114$)を出力してください。

続く $k$ 行には、各行に FakeSort(l,r) を実行することを表す $l, r$($1 \le l \le r \le n$、かつ $r - l + 1$ は偶数)を出力してください。

入出力例

入力例 1

3
4
2 1 4 3
6
3 6 5 1 2 4
8
3 2 1 7 5 4 6 8

出力例 1

1
1 4
-1
2
4 7
1 6

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1071EditorialOpenNew Editorial for Problem #15316ZnPdCoView

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.