CF733E Sleep in Class
题目描述
新学年刚刚开始,但课程和奥林匹克竞赛已经占据了所有的空闲时间。毫不奇怪,今天 Olga 在文学课上睡着了。在梦中,她出现在一段楼梯上。
这段楼梯有 $n$ 级台阶。台阶从下到上编号,也就是说,最低的台阶编号为 $1$,最高的台阶编号为 $n$。每一级台阶上方都有一个指示 Olga 应该从这一级往哪个方向(上或下)走的指示器。每当 Olga 踏上下一步,这一级台阶上方的指示器方向都会改变。也就是说,指示“上”的会变成“下”,而指示“下”的会变成“上”。
Olga 总是按照她当前停留台阶上的指示器指向移动。
如果 Olga 走出了楼梯,她就会醒来。走出楼梯是指从第一级台阶向下走或者从第 $n$ 级台阶向上走。
每一秒,Olga 都会按照她当前所在台阶上的指示器指示的方向,向上或向下移动一级。
对于每一级台阶,求如果 Olga 在梦开始时出现在这一台阶上,她的梦持续的时间是多少。
Olga 掉下楼梯的过程也需要一秒,所以如果她在第一级台阶往下走,她会在下一秒醒来。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 10^{6}$)——楼梯的台阶数。
第二行包含一个长度为 $n$ 的字符串 $s$,表示楼梯上各台阶初始时刻的指示器方向。字符串 $s$ 的第 $i$ 个字符表示第 $i$ 级台阶上方的指示器方向,'U' 表示指向上,'D' 表示指向下。
指示器按从下到上的顺序给出。
输出格式
输出 $n$ 个数字,第 $i$ 个数字表示 Olga 在梦开始时如果站在第 $i$ 级台阶上,她的梦能持续的时间;如果 Olga 永远无法走出楼梯,则输出 $-1$。
说明/提示
由 ChatGPT 5 翻译