#P14889. [OOI2019预选赛long]Строка и перестановка 字符串与排列
[OOI2019预选赛long]Строка и перестановка 字符串与排列
题目背景
原题是一道交互题。为了便于在 Hydro OJ 上使用普通输入输出文件进行评测,本配置将交互过程改成一次性输出:输入中直接给出字符串 s 和隐藏排列 p,选手需要输出一组满足原交互题要求的最小询问方案,以及最终得到的字符串 t。评测器会检查询问方案是否合法、是否达到原题要求的最小询问数,并检查最终字符串是否正确。
题目描述
给定一个由 个小写英文字母组成的字符串
以及一个排列
按照如下方式生成新字符串 :将原字符串 的第 个字符放到新字符串 的第 个位置上。
也就是说:
你需要输出字符串 。
为了保留原交互题的判题逻辑,你还需要在最终答案前输出一组“询问方案”。一次询问由一对下标 组成,满足 。原交互题中,询问 可以知道 是否成立。
在本普通评测版本中,评测器要求你的询问方案满足原题的最小询问数要求:
- 对于所有满足 且 的下标对,必须恰好询问一次;
- 对于满足 的下标对,不应询问;
- 询问对不能重复;
- 最后输出的字符串必须等于由排列 生成的 。
若存在多种合法输出,输出任意一种即可。
输入格式
第一行输入一个非空字符串 ,只包含小写英文字母。
第二行输入 个整数 ,表示一个 到 的排列。
输出格式
第一行输出一个整数 ,表示询问数量。
接下来 行,每行输出两个整数 ,表示询问下标对,要求 。
最后一行输出字符串 。
数据范围
对于全部测试数据:
- ;
- 只包含小写英文字母;
- 是 到 的一个排列;
- 。
样例 1
输入
ab
1 2
输出
1
1 2
ab
说明
询问 后可知 ,排列为 ,因此新字符串为 ab。
样例 2
输入
ab
2 1
输出
1
1 2
ba
说明
询问 后可知 ,排列为 ,因此新字符串为 ba。
样例 3
输入
qqq
2 3 1
输出
0
qqq
说明
所有字符都相同,不需要询问任何下标对,最终字符串仍然是 qqq。
样例 4
输入
baa
2 3 1
输出
2
1 2
1 3
aba
说明
原字符串为 baa,排列为 ,所以:
- 放到位置 ;
- 放到位置 ;
- 放到位置 。
因此最终字符串为 aba。
原题评分信息
原交互题分组如下,仅供参考:
| 组别 | 分值 | 附加限制 | 依赖组别 |
|---|---|---|---|
| 0 | 样例测试 | - | |
| 1 | 5 | 0 | |
| 2 | 10 | 字符串 中所有字符互不相同 | - |
| 3 | 25 | 字符串 中只含有 a 和 b |
|
| 4 | 60 | 无附加限制 | 0,1,2,3 |
提示
本配置的 Special Judge 会根据输入中的 和 验证输出。.out 文件只作为 Hydro 测试数据结构的一部分存在,最终判定以 spj.cpp 为准。