bdfz_2024_summer/day4/T435167/T435167.md

1.6 KiB
Raw Blame History

01 Sort

题目描述

给定两个长度为 n 的序列 a[1...n] 和 $b[1...n]$,其中每个 a[i] 都对应一个属性 $b[i]$,并且 b[i] 的取值只能为 0 或者 $1$。

定义一次操作的规则如下:

  • 选择满足 b[i]\neq b[j] 的两个数 i 和 $j \ (1\le i,j\le n, i\neq j)$,分别交换对应的 a[i],a[j]b[i], b[j]

你最多可以执行 x\in [0, 10^5] 次操作,请你判断能否在规定次数内,使得序列 a[1...n] 排序成非降顺序吗?如果可以,请你输出一种可能的操作方案;如果不可以,则输出 $-1$。

输入格式

第一行包含一个整数 $t$,代表 t 组数据

每组数据的第一行保包含 1 个整数 $n$,表示序列长度

每组数据的第二行 n 个整数 a[1...n]

每组数据的第三行 n 个整数 $b[1...n]$,表示每个 a[i] 对应的属性 01

输出格式

请你分别输出 t 组数据的答案。

对于每组数据,第一行输出一个整数 x \ (x\in [0, 10^5]) 代表操作次数,若无解则输出 $-1$。接下来的 x 行,每行两个整数 i 和 $j$,代表一次操作。

如果有多个答案,则打印其中任何一个。你不必尽量减少移动的次数。

样例 #1

样例输入 #1

5
4
10 20 20 30
0 1 0 1
3
3 1 2
0 1 1
4
2 2 4 8
1 1 1 1
3
5 15 4
0 0 0
4
20 10 100 50
1 0 0 1

样例输出 #1

0
2
1 2
2 3
0
-1
2
1 2
3 4

提示

对于 20\% 数据,$1\le t\le 10$$1\le n\le 100$$1\le a[i]\le 100$,所有 b[i]=0

对于 100\% 数据,$1\le t\le 100$$1\le n\le 10^3$$1\le a[i]\le 10^5$b[i]\in \{0,1\}