Logo 邂逅编程之美

UOJ

时间限制:3 s 空间限制:512 MB
统计

有 SPJ 的题不会是构造题。

题目描述

平面上有一个机器人,初始位于 $(0,0)$。有一个长为 $n$ 的包含 LRS 三种字母的字符串 $S$。 机器人会进行 $n$ 次移动,假设当前坐标为 $(x,y)$,对于第 $i$ 次移动:

  • 若 $S_i$ 为 L,则移动至 $(x-1,y)$。

  • 若 $S_i$ 为 R,则移动至 $(x+1,y)$。

  • 若 $S_i$ 为 S,则移动至 $(x,y+1)$。

你可以在平面上放置若干个障碍,如果机器人将要移动到的位置上有障碍,则不会进行这次移动。

你的目标是让机器人在 $n$ 次移动后位于 $(X,Y)$。为了解题方便,保证 $X,Y\ge0$。

输入格式

从文件 $\texttt{robot.in}$ 中读入数据。

第一行三个非负整数 $n,X,Y$。

第二行一个长为 $n$ 的字符串序列 $S$。

输出格式

输出到文件 $\texttt{robot.out}$ 中。

无解输出 $-1$。

否则第一行一个非负整数 $m$,表示你放置的障碍数,需要保证 $m\le2\times10^6$,且 $(0,0)$ 处没有障碍。

接下来 $m$ 行每行两个整数 $x,y$,表示在 $(x,y)$ 处放置了障碍,需要保证 $x,y$ 在 int 范围内。

样例 1 输入

5 1 2
SRRSL

样例 1 输出

0

样例 2 输入

9 2 1
SRSLLSRSR

样例 2 输出

3
-1 1
0 2
1 2

样例 3

见选手目录下的 $\text{robot3.in}$$\text{robot3.ans}$

数据范围与提示

$1\le n\le3\times10^5,0\le X,Y\le n$

子任务编号 特殊性质 分值
$1$ $X+Y>n$ $3$
$2$ $n\le 20$ $12$
$3$ $n\le229$ $25$
$4$ $n\le2024$ $20$
$5$ $n\le22922$ $20$
$6$ $20$

我们下发了 $\texttt{checker.cpp}$ 文件,可以编译生成可执行文件 $\texttt{checker}$ 来检查你输出的正确性。

$\texttt{checker}$ 的使用方法为:$\texttt{checker }$,参数依次代表输入文件、你的输出文件、答案文件。