#3551. 零一游戏

零一游戏

题目描述

小 Petya 非常喜欢和小 Masha 一起玩。最近妈妈送了他一个叫"零一"的游戏,Petya 立刻邀请 Masha 一起玩。

游戏开始前,桌上从左到右摆成一排放着若干卡片,每张卡片上写着一个数字:0 或 1。两人轮流行动,Masha 先手。每次行动,玩家要从桌上拿走一张卡片,然后把其余卡片移拢填补空位。例如,若某次行动前桌上的卡片形成序列 01010101,拿走第四张卡片(卡片从 1 开始编号)后,序列变成 0100101。

当桌上恰好剩下两张卡片时游戏结束。这两张卡片上的数字按二进制表示一个数:最高位在左边。Masha 的目标是让这个数尽量小,Petya 的目标是让它尽量大。

游戏开始前发生了一起不愉快的事故:孩子们把果汁洒在了其中一些卡片上,卡片上的数字被弄模糊了。每张被泼的卡片上写可能是 0,也可能是 1。考虑初始数字(泼果汁之前)的所有可能情形。对每种情形,假设 Petya 和 Masha 都采取最优策略,求游戏结束时剩下哪两张卡片。这两张卡片上数字构成的有序数对称为一个结局。你的任务是求出所有可能初始数字情形的结局集合。

输入格式

第一行包含一个字符序列,每个字符是 "0"、"1" 或 "?" 之一。该序列从左到右给出卡片初始摆放情况,"?" 表示该卡片在游戏前被泼坏了。序列长度在 2 到 10510^5 之间(含)。

输出格式

输出所有可能初始数字情形的结局集合,每个结局单独一行,用两个字符表示游戏结束时两张卡片上的数字。结局按字典序升序排列(见第一组样例)。

????
00
01
10
11
1010
10
1?1
01
11

说明/提示

第一组样例中,16 种数字摆放情形都有可能。情形 0000 的结局是 00;情形 1111 的结局是 11;情形 0011 的结局是 01;情形 1100 的结局是 10。无论其余情形的结局如何,所求集合都会包含全部 4 种结局。

第三组样例只有 2 种可能的摆放:111 和 101。情形 111 的结局是 11;情形 101 的结局是 01,因为 Masha 第一轮可以拿走最左边那张卡片,之后无论 Petya 怎么拿,剩下的两张卡片都是 0 和 1。