AT_abc146_f.[ABC146F] Sugoroku
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
高桥君在玩双六棋,棋盘格由用0到N编号的共N+1个格子构成。每一回合,高桥君会扔一个点数1到M的骰子。如果高桥君当前在第i格,骰子扔出k点,高桥君就前进到第i+k格。 如果此时i+k>N,高桥君立刻输掉。另外,棋盘上还有若干个“GameOver格”,如果高桥停在这些格子,也立刻输掉游戏。
假设高桥君可以自由控制骰子的点数,那么他从0号格子出发,到达N号格子,最短需要多少回合?输出用最短回合到达N格时,每回合骰子的点数组成的序列;如果无法到达N号格子,输出-1。
输入格式
第1行,两个正整数N,M
第2行,一个长为N+1的字符串S。Si=0表示第i格是一个普通格子;Si=1表示第i格是一个GameOver格。
输出格式
输出用最短回合到达N格时,每回合骰子的点数组成的序列,若有多种序列回合数都是最短,输出其中字典序最小的。
如果无法到达N号格子,输出-1。
输入输出样例
输入#1
9 3 0001000100
输出#1
1 3 2 3
输入#2
5 4 011110
输出#2
-1
输入#3
6 6 0101010
输出#3
6
说明/提示
按1,3,2,3的顺序扔出骰子的点数,高桥君会经过第1,4,6格最终到达第9格。
无法在3次以内到达第9格。1,3,2,3是所有4次到达第9格的点数序列中,字典序最小的。
1≤N≤105
1≤M≤105
S长度为N+1,只由字符'0'和'1'组成,保证S0=0,SN=0。