宋祖清册策
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
宋祖清册策
题目背景
显德年间,后周世宗柴荣亲征南唐,遣殿前都虞候赵匡胤自领兵马,鏖战江淮,克清流关,复取滁州城。
城破之后,赵匡胤为抚安百姓,急命清点户籍,登册造籍,以定徭役兵赋。时值战乱新平,百姓流离失所,民籍荒废,城中居民杂处,未有秩序。
官吏仓促立册,录入各户,唯因形势匆忙,登记无序,名册上居民顺序错乱无章,不能循序。
赵匡胤素重治安,以法制民。为整肃城中百姓,复定纲纪,赵匡胤下令:
- 清册之中,每户应有一编号,编户齐备,编号为 至 ,一一对应,绝无重号;
- 册中居民当依编号自小至大依次排列,次第井然,以示法治;
- 每次整顿操作,吏卒可点名两户,互换二者在清册之中之列位;
- 各户不得擅动位置,亦不得自行更易,唯官吏指令,方可移列;
- 更易操作无数量限制。
- 整顿完成,需如实录明整顿步骤,记下每次交换所涉及的两户列位编号;
- 整顿后,需确保清册顺序为,一一对应,编号无误。
然则清册初立错杂无章,官吏徒有法令,不知如何整顿而从速。赵匡胤念军政之急,召能吏参议,求最佳整序之策,令不误国事,不扰民生。
任务说明
你需参赞赵匡胤,定一策令,使得最终清册之居民编号,依次为 ,无一错位。
你应具录整顿步骤,列出所需操作次数及每次操作所交换的两户位置。
输入输出格式
输入格式
输入一共两行:
第一行一整数 ,表示城中居民户数;
第二行 个正整数,表示初始登记的居民编号顺序。
保证编号各不相同,且为 至 之间整数,清册初立,顺序错杂,需整顿。
输出格式
第一行输出整顿操作的总次数 K
接下来 K 行,每一行,输出一对整数 ,表示将清册中第 户与第 户居民的列位交换。
整顿完成后,清册中居民编号应严格依次为 。
题目样例
样例#01
5
3 4 1 2 5
2
1 3
2 4
样例说明 操作改变序列如下
- 最初为 。
- 第一次操作将第一和第三个元素对调,得到 。
- 第二次操作将第二和第四元素对调,得到 。
** 其他输出结果,例如以下结果,也被认为是正确的:**
4
2 3
3 4
1 2
2 3
样例#02
4
1 2 3 4
0
样例#03
3
3 1 2
2
1 2
2 3
数据范围
- ;
- 输入的居民编号为 至 的一个排列,且互不相同。