#z1038. 量子随机排序
量子随机排序
Description
V 试图侵入荒坂公司的主服务器,获取关键的机密数据。然而,这台 服务器采用了先进的安全防护机制,其中最核心的一环是一个基于量 子快速排序算法的防御系统。 这个防御系统会对一个数据序列不断进行量子快速排序,以防止未经授权的访问。 数据序列由 n 个数组成,初始序列为 a1, a2, ⋯ , a𝑛。 每当有人试图访问时,防御系统会自动触发量子随机排序算法,对数据序列进行重新排列。而只有当数据序列被排列成一个特定的序列 b1, b2, ⋯ , b𝑛 时,V 才能绕过防御系统,成功获取机密数据。 服务器使用的量子快速排序算法如下:
其中,quantum_rand() 是量子随机数生成器,可以用于产生随机数。 不过,V 已经成功破解了这个量子随机数生成器,可以通过干预指定每次 quantum_rand() 的返回值。 quantum_rand() 的调用需要大量时间,由于 V 的时间有限,最多只能等待 quantum_rand() 执行 k 次。一旦 quantum_rand() 的调用 超过了 k 次,即视为任务失败。 V 的目标是,让初始序列 a1, a2, ⋯ , a𝑛 在调用 shuffle(a) 后,通过指定前 k 次 quantum_rand() 的返回值,使得最终的序列变成b1, b2, ⋯ , b𝑛。 若任务无法完成,请输出 −1;否则,输出 k 次 quantum_rand 的返回结果。答案可能不止一种,输出任意一种满足条件的答案即可。
Format
Input
第一行包含两个用空格分隔的整数 n, k。 第二行包含 n 个用空格分隔的整数 a1, a2, ⋯ , a𝑛。 第三行包含 n 个用空格分隔的整数 b1, b2, ⋯ , b𝑛,保证 b 是 a 的 一个排列。
Output
Samples
样例1
3 3
1 2 3
2 3 1
2 0 1
样例2
3 2
1 2 3
2 3 1
-1
样例3
3 2
1 1 1
1 1 1
-1
样例3说明: 虽然 a 最终一定会排列成 b,但是 quantum_rand() 的调用次数必然超过2。 因此由于时间原因,任务无法完成。
Limitation
1s, 1024KiB for each test case.
相关
在下列比赛中: