#5118. robo

内存限制:64 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: xin_fu

题目描述

自从 Dji 推出 robomaster S1 机器人过后 小文就一直缠着爸爸想要一个机器人 。 妹想到爸爸最后竟然带了个低仿 S1-R1 机器人回来 。 小文哭笑不得不过低仿低仿不玩白不玩他决定试试这个小机器人的能耐。

小文给这个小机器人布置了 n \times m 的场地,场地外用障碍围住 在场地上设置了障碍、水池和靶子。 其中障碍是不可以通过并且无法用水晶弹打掉的,靶子无法通过、但是可以被水晶弹打掉,水池也无法通过、但是水晶弹可以通过水池。

小文检查了一下小机器人发现它的指令系统很简单。该系统中一共有 6 种指令,指令的使用说明如下:

  • FT x 该指令表示炮台的 90° 转动,其中 x \in [0, 1], x \in Z 并且 0 1 分别表示逆时针 和 顺时针 。

  • FF i 该指令表示填弹,填弹后弹仓剩余弹量减一,弹夹剩余弹量加一,其中 i \in [0, 1], i \in Z i 1 表示所填水晶弹为大弹丸为 0 表示所填水晶弹为小弹丸 。

  • FE 该指令表示发射水晶弹,水晶弹的发射方向同炮台的朝向,发射的水晶弹为最后一个填入弹夹的水晶弹,指令执行后弹夹弹量减一 。

  • WT x 该指令表示机器人的 90° 转动,其中 x \in [0, 1], x \in Z 并且 0 1 分别表示 逆时针 和 顺时针。

  • WG y 该指令表示机器人前进 y 步 其中 y \in [0, \max(m, n)), y \in Z

  • END 该指令将返回 Complete 并停机,不同于编译器先编译后运行 END 及其他将造成停机的情况 后的指令均被无视 。

现在小文将要开始测试,但是为了避免自己的指令集让小机器人出现错误,小文给了你场地、小机器人的 初始状态和指令集并拜托你帮他计算出小机器人的返回内容 、停下的位置、打掉的靶子数量以及小机器人的状态 。

注意:

  1. 弹夹无弹的情况下将跳过 FE 指令,弹仓无相应弹丸的情况下将跳过 FF 指令;

  2. 大水晶弹一发打掉靶子,小水晶弹需两发打掉靶子,靶子打掉后变成空地可通过;

  3. 小机器人将在以下情况下返回 ERROR 并停机:

    1. 在弹夹已满的情况下继续填弹

    2. 撞上障碍包括未被打掉的靶子或者撞进水池

    3. 指令后的参数不满足要求,例 FE 10

    4. END 指令

输入格式

输入文件的第一行为一个正整数 t 表示该题有 t 组数据 。

对于每一组数据:

1 行为两个正整数 n, m

2 ~ n+1 行 每行 m 个正整数,表示地图,其中 1 代表障碍, 2 代表靶子, 3 代表水池, 0 代表空地 。

n+2 行有 6 个正整数,依次为:机器人横坐标 x 和纵坐标 y , 弹夹的容量 a ,弹仓内剩余大水晶弹量 b ,弹仓内剩余小水晶弹量 c ,小文的指令数量 k 。(弹夹初始容量默认为 0 ,炮台和机器人的默认朝向为向上)

n+3 ~ n+3+k 行,每行一个指令,指令的正确格式和正确参数见题目描述。(不满足要求的参数大小 \le 10 , 长度 \le 3

输出格式

输出文件共 t \times 4 行,其中对于每组数据:

1 行输出小机器人的返回内容 CompleteERROR

2 行输出小机器人停下的位置的横纵坐标 (用空格隔开)。

3 行输出小机器人打掉的靶子数量 h

4 行依次输出炮台的朝向、机器人的朝向、弹仓剩余大水晶弹量、弹仓剩余小水晶弹量,用空格隔开,其中 0123分别表示上左下右

若机器人返回 ERROR 后停机,则输出数据为执行错误指令前的数据 。(见样例)

样例

样例输入

1
5 5
2 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
4 4 3 1 1 6
WG 4
FT 0
WG 1
FE
END
FF

样例输出

ERROR
0 4
0
1 0 1 1

数据范围与提示

对于 10 \% 的数据, t = 1 且输入的指令的参数不会出错 。

对于另外 20 \% 的数据,输入的指令的参数不会出错 。

对于另外 50 \% 的数据,弹仓只有大弹丸 。

对于全部数据 t \le 20 n,m \le 200 a \le 30 b , c \le 100 k \le 100


累死了!!!