UOJ Logo Universal Online Judge

UOJ

#170. 我也许玩了假魔塔

统计

题目描述

YMDragon 听说大家都喜欢玩魔塔,所以他自己做了个给大家玩。

不过,由于他太垃圾啦,只能做出某一层的地图,而且这个地图仅包含以下地形:

@:墙(Wall),不可通行。

.:通道(Road),可以通行。

M:怪物(Monster),可以通行,但第一次通行时必须先打败怪物。

P:玩家(Player),可以通行,作为玩家的出生地点。

H:血瓶(Healing salve),可以通行,第一次通过时获得该血瓶(自动增加相应的生命值)。

D:门(Door),可以通行,但第一次通行时需要消耗一枚钥匙。

K:钥匙(Key),可以通行,第一次通过是获得该钥匙。

J:宝石(Jewel),可以通行,第一次通过时获得该宝石(自动增加相应的防御值)。

E:出口(Export),可以通行,走到出口时自动结束游戏并进行评分。

YMDragon 规定,玩家出生在某个给定的点上,并最终要走到出口(Export)。最后评分时,玩家的剩余生命值越多,分数就越高。

现在,YMDragon 把魔塔交给了你。当然,你要尽可能地获得更高的分数,不然 YMDragon 会认为你在敷衍他而不高兴的。

输入格式

第一行两个整数 $R$ 和 $C$,描述地图的大小,并规定左上角为 $(1,1)$,右下角为 $(R,C)$。

接下来 $R$ 行,每行 $C$ 个字符描述地图。字符仅含有题面中的 $9$ 种字符。

接下来若干行描述血瓶,每行三个整数 $x$,$y$,$val$,描述一个位置在 $(x,y)$ 的,生命值为 $val$ 的血瓶,以一行三个 $0$ 结束。

接下来若干行描述宝石,每行三个整数 $x$,$y$,$val$,描述一个位置在 $(x,y)$ 的,防御值为 $val$ 的宝石,以一行三个 $0$ 结束。

接下来若干行描述怪物,每行四个整数 $x$,$y$,$a$,$b$,描述一个位置在$(x,y)$的怪物,且初始情况下,玩家需要用 $a$ 回合才能消灭该怪物,每回合怪物对玩家造成 $b$ 点伤害,以一行四个 $0$ 结束。

最后一行一个正整数,描述玩家的初始生命值(没有上限)。

输出格式

第一行一个整数 $K$,表示你的行动步数。

接下来 $K$ 行,每行两个整数 $x,y$,表示在本次移动中,你移动到了 $(x,y)$,每次你只能向相邻的四个格子移动。

你输出的 $K$ 不能超过 $3*10^6$,且最终你必须停留在出口(Export),且生命值必须一直是正数。

样例

样例输入 1


3 3
E.P
D@J
HKM

Healing salve:
3 1 10
0 0 0

Jewel:
2 3 2
0 0 0

Monster:
3 3 10 2
0 0 0

Player:
351

样例输出 1

6
2 3
3 3
3 2
3 1
2 1
1 1

提示

初始情况下的防御值为 0,每回合怪物实际造成的伤害为 $max$(0,初始情况伤害-防御值)。


或者逐个上传: