luogu#P8862. 「KDOI-03」还原数据
「KDOI-03」还原数据
题目描述
小 E 正在做一道经典题:
给定一个长度为 的序列 和 个操作,操作共有 种类型:
- :对于所有 ,。
- :对于所有 ,。
题目要求输出所有操作结束后的最终序列 。
小 E 迅速写了一份代码提交,但是发现,由于宇宙射线的影响,输入数据出现了一些小问题。具体地,对于所有 操作,操作中给出的 均被丢失了,也就是说,输入数据中的 操作只剩下了 。输出数据则没有问题。小 E 现在想要通过剩余的数据恢复原来的输入数据,请你帮助他完成这个任务。
当然,可能会有多种合法的输入数据,你需要找到其中任意一种。数据保证有解。
输入格式
从标准输入读入数据。
本题有多组测试数据。
第一行一个正整数 ,表示数据组数。
对于每组测试数据,第一行两个非负整数 。
第二行 个整数,表示初始序列 。
接下来 行,每行一次操作,形如 或 。
接下来一行 个整数,表示最终序列 。
输出格式
输出到标准输出。
本题开启自定义校验器(Special Judge)。
对于每组测试数据,设共有 个 操作,输出一行 个整数,第 个整数表示第 次 操作中所给出的 的值。
你需要保证 。
1
5 3
1 2 3 4 5
2 3 5
1 3 4 2
2 1 1
20 2 5 6 5
3 20
提示
【样例 1 解释】
所有合法输出需要满足:第 个数 ,第 个数恰好为 。
【样例 2】
见选手文件中的 restore/restore2.in
与 restore/restore2.ans
。
【样例 3】
见选手文件中的 restore/restore3.in
与 restore/restore3.ans
。
【数据范围】
记 为单组数据内 操作的个数, 为单个测试点内所有 的和, 为单个测试点内所有 的和。
对于 的数据,保证 ,。
对于 的数据,保证 ,。
对于另外 的数据,保证 。
对于另外 的数据,保证 。
对于 的数据,保证 ,,,,, 。
【校验器】
本题样例文件较大,无法在附件中下载,请在选手文件中查看。
为了方便测试,在 目录下我们下发了 文件。你可以编译该文件,并使用它校验自己的输出文件。请注意它与最终评测时所用的校验器并不完全一致,你不需要也不应该关心其代码的具体内容。
编译命令为:
g++ checker.cpp -o checker -std=c++14
使用方式为:
./checker <inputfile> <outputfile> <answerfile>
校验器可能会返回以下状态中的其中一种:
- :表示你的输出完全正确。
- :表示你的输出在第 个测试数据出错。
【提示】
本题输入输出量较大,推荐使用较快的输入输出方式。
KDOI 出题组温馨提示:多测不清空,爆零两行泪。