#M1. Arrow Array
Arrow Array
Background
语言入门题不是编号为 M1 或类似编号数字小的题,请查看题目编号为 Basic 开头的题目。
Description
一个箭头序列是一个字符串,只有 -
和 >
两种字符构成,满足:
- 长度不小于 .
- 第一个字符是
>
,最后三个字符也是>
,其他字符全是-
.
例如:>--->>>
是箭头序列,但 >>>->
,---->
,>->>
不是。
初始的时候,你有一个全为 *
的字符串(设其长度为 ,字符串下标从 开始),你可以对这个字符串进行如下的操作:
- 选择一个长度不小于 的连续子串,将这一段子串用等长的箭头序列覆盖(替换)掉。
例如 ********
,对子串 进行一次操作可以得到 >-->>>**
;再对 操作可以得到 >->-->>>
.
给定一个长度为 的只含有 -
和 >
两种字符的字符串 ,你需要判断能否用不超过 次操作,把全为 *
的字符串变成 . 若能,你需要构造出一种实现方案。
Format
Input
本题含有多组测试。第一行输入一个正整数 表示测试数。
随后对于每一组测试,输入一行,含一个字符串,表示 .
保证所有数据的 的长度和 .
Output
对于每一组数据,先输出一行,仅一个字符串 Yes
或 No
(注意大小写),表示是否存在步数不超过 的解。
若有解:则再输出一行,仅一个正整数 表示你构造的方案的操作次数;随后输出 行,每行两个正整数 表示你对子串 进行了一次操作。
Samples
3
>->-->>>
>>>>->>>->>->
>->>>>>>>
Yes
2
1 6
3 8
No
Yes
3
1 9
1 6
1 5
Limitation
1s, 256MiB.