#HK5415. 「OOI 2018 Day 1」斑马
「OOI 2018 Day 1」斑马
题目描述
题目译自 Open Olympiad in Informatics 2018 Day1 T1 「Зебры / Zebras」。
奥列格记录了他生活中每一天的经历,将每一天标记为好日子或坏日子。奥列格将一种非空的日子序列定义为“斑马”,该序列必须以坏日子开始和结束,并且好日子和坏日子交替出现。我们用 表示坏日子,用 表示好日子。例如,日子序列 、、 都是斑马,而序列 、 和 则不是。
奥列格以字符串形式按时间顺序向你提供了他的日子记录,字符串由字符 和 组成。现在,你需要判断是否可以将奥列格的日子记录拆分为若干个子序列,使得每个子序列都是一个斑马。如果可以拆分,你需要给出一种拆分方案。每个日子必须且只能属于一个子序列。每个子序列中的日子必须按时间顺序排列。注意,子序列不一定是由连续的日子组成的。
输入格式
输入数据只有一行,包含一个非空字符串 ,由字符 和 组成,表示奥列格的日子记录。字符串的长度(以下简称 )不超过 个字符。
输出格式
如果可以将日子记录拆分为若干个斑马子序列,则在第一行输出一个整数 ,表示拆分得到的子序列数量。接下来在 行中,第 行首先输出一个整数 ,表示第 个子序列的长度,然后输出 个整数,表示组成该子序列的日子在记录中的编号。编号必须按升序排列,从 开始。每个从 到 的编号必须且只能出现在一个子序列中。如果无法拆分为斑马子序列,则输出 。
子序列可以按任意顺序输出。如果存在多种可能的拆分方式,可以输出任意一种。无需最小化或最大化 的值。
0010100
3
3 1 3 4
3 2 5 6
1 7
111
-1
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 是样例。
| 子任务 | 分值 | 附加限制 | 备注 |
|---|---|---|---|