CF1733C.Parity Shuffle Sorting

普及-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array aa with nn non-negative integers. You can apply the following operation on it.

  • Choose two indices ll and rr (1≤l<r≤n1 \le l \lt r \le n).
  • If al+ara_l + a_r is odd, do ar:=ala_r := a_l. If al+ara_l + a_r is even, do al:=ara_l := a_r.

Find any sequence of at most nn operations that makes aa non-decreasing. It can be proven that it is always possible. Note that you do not have to minimize the number of operations.

An array a1,a2,…,ana_1, a_2, \ldots, a_n is non-decreasing if and only if a1≤a2≤…≤ana_1 \le a_2 \le \ldots \le a_n.

给你一个包含 nn 个非负整数的数组 aa。你可以对它执行以下操作:

  • 选择两个下标 ll 和 rr(满足 1≤l<r≤n1 \le l \lt r \le n);
  • 若 al+ara_l + a_r 为奇数,则令 ar:=ala_r := a_l;若 al+ara_l + a_r 为偶数,则令 al:=ara_l := a_r。

请找出任意一个至多包含 nn 次操作的操作序列,使得数组 aa 变为非递减序列。可以证明这样的序列总是存在的。注意:你无需最小化操作次数。

数组 a1,a2,…,ana_1, a_2, \ldots, a_n 是非递减的,当且仅当 a1≤a2≤…≤ana_1 \le a_2 \le \ldots \le a_n。

输入格式

The first line contains one integer tt (1≤t≤1051 \le t \le 10^5) — the number of test cases.

Each test case consists of two lines. The first line of each test case contains one integer nn (1≤n≤1051 \le n \le 10^5) — the length of the array.

The second line of each test case contains nn integers a1,a2,…,ana_1, a_2, \ldots, a_n (0≤ai≤1090 \le a_i \le 10^9) — the array itself.

It is guaranteed that the sum of nn over all test cases doesn't exceed 10510^5.

第一行包含一个整数 tt(1≤t≤1051 \le t \le 10^5)—— 测试用例的数量。

每个测试用例由两行组成。每个测试用例的第一行包含一个整数 nn(1≤n≤1051 \le n \le 10^5)—— 数组的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤1090 \le a_i \le 10^9)—— 数组本身。

保证所有测试用例的 nn 之和不超过 10510^5。

输出格式

For each test case, print one integer mm (0≤m≤n0 \le m \le n), the number of operations, in the first line.

Then print mm lines. Each line must contain two integers li,ril_i, r_i, which are the indices you chose in the ii-th operation (1≤li<ri≤n1 \le l_i \lt r_i \le n).

If there are multiple solutions, print any of them.

对于每个测试用例,在第一行输出一个整数 mm(0≤m≤n0 \le m \le n),表示操作次数。

然后输出 mm 行。每行必须包含两个整数 li,ril_i, r_i,表示第 ii 次操作中所选择的下标(1≤li<ri≤n1 \le l_i \lt r_i \le n)。

若存在多种解法,输出任意一种即可。

输入输出样例

  • 输入#1

    3
    2
    7 8
    5
    1 1000000000 3 0 5
    1
    0

    输出#1

    0
    2
    3 4
    1 2
    0

说明/提示

In the second test case, aa changes like this:

  • Select indices 33 and 44. a3+a4=3a_3 + a_4 = 3 is odd, so do a4:=a3a_4 := a_3. a=[1,1000000000,3,3,5]a = [1, 1000000000, 3, 3, 5] now.
  • Select indices 11 and 22. a1+a2=1000000001a_1 + a_2 = 1000000001 is odd, so do a2:=a1a_2 := a_1. a=[1,1,3,3,5]a = [1, 1, 3, 3, 5] now, and it is non-decreasing.

In the first and third test cases, aa is already non-decreasing.

在第二个测试用例中,数组 aa 的变化过程如下:

  • 选择下标 33 和 44。由于 a3+a4=3a_3 + a_4 = 3 是奇数,执行操作 a4:=a3a_4 := a_3。此时 a=[1,1000000000,3,3,5]a = [1, 1000000000, 3, 3, 5]。
  • 选择下标 11 和 22。由于 a1+a2=1000000001a_1 + a_2 = 1000000001 是奇数,执行操作 a2:=a1a_2 := a_1。此时 a=[1,1,3,3,5]a = [1, 1, 3, 3, 5],已变为非递减序列。

在第一个和第三个测试用例中,数组 aa 本身已经是非递减的。

输入解题思路,AI测评打分。不知道怎么写?

首页