atcoder#ABC303C. [ABC303C] Dash
[ABC303C] Dash
题目描述
二次元平面の点 に高橋君がいます。初め、高橋君の体力は です。また、二次元平面には 個の体力を回復するアイテムがあり、 個目のアイテムは点 に置いてあります。
高橋君は、これから 回の移動をします。 回目の移動は以下の方法で行われます。
- 今高橋君がいる点を とする。体力を 消費し、 の 番目の文字 に応じて以下の点に移動する。
- が
R
のとき: - が
L
のとき: - が
U
のとき: - が
D
のとき:
- 高橋君の体力が負になった場合、高橋君は倒れてしまい、移動をやめる。そうでない場合、移動した点にアイテムがあり、かつ高橋君の体力が 未満ならば、移動した点に置かれたアイテムを消費し、高橋君の体力が になる。
高橋君が一度も倒れることなく 回の移動を行えるか判定してください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
高橋君が一度も倒れることなく 回の移動を行える場合 Yes
を、そうでない場合 No
を出力せよ。
题目大意
现在高桥在一个二维平面上。初始时他在 处,生命值为 。平面上有 个可以恢复生命值的物品,其中第 个物品的位置为 。
高桥将要进行 次移动,第 次移动的方式如下:
- 设高桥现在的位置是 ,那么他将会消耗 点生命值,同时:
- 如果 ,移动到 ;
- 如果 ,移动到 ;
- 如果 ,移动到 ;
- 如果 ,移动到 。
- 如果高桥的生命值降为负数,他就会倒下无法行动;否则,如果当前位置有一个可以恢复生命值的物品,且当前生命值小于 ,那么生命值将会恢复到 。
请判断高桥能否进行完所有的移动而不倒下。
数据范围与约定
,。
保证 是一个只由字符 R
、L
、U
、D
构成的长度为 的字符串。保证 两两不同。保证所有输入的数均为整数。
输入格式
第一行输入四个数 。第二行输入一个长度为 的字符串 。接下来 行,第 行输入两个数 。
输出格式
如果高桥可以进行完所有 次移动,输出 Yes
,否则输出 No
。
4 2 3 1
RUDL
-1 -1
1 0
Yes
5 2 1 5
LDRLD
0 0
-1 -1
No
提示
制約
- は
R
,L
,U
,D
からなる長さ の文字列 - は互いに異なる
- 以外の入力は全て整数
Sample Explanation 1
初め高橋君の体力は です。以下で移動を説明します。 - 回目の移動: が R
なので点 に移動する。高橋君の体力は に減る。点 にはアイテムが置いてあるが、高橋君の体力は 以上なのでアイテムは消費されない。 - 回目の移動: が U
なので点 に移動する。高橋君の体力は に減る。 - 回目の移動: が D
なので点 に移動する。高橋君の体力は に減る。点 にはアイテムが置いてあり、体力は 未満なのでアイテムを消費し、体力が になる。 - 回目の移動: が L
なので点 に移動する。高橋君の体力は に減る。 以上より、高橋君は倒れずに 回の移動を行えるので、Yes
を出力してください。体力は になってもいいことに注意してください。
Sample Explanation 2
初め高橋君の体力は です。以下で移動を説明します。 - 回目の移動: が L
なので点 に移動する。高橋君の体力は に減る。 - 回目の移動: が D
なので点 に移動する。高橋君の体力は に減る。体力が になってしまったので、高橋君は倒れてしまい、移動をやめる。 以上より、高橋君は倒れてしまうので、No
を出力してください。 高橋君がはじめいる点 にはアイテムが置いてありますが、移動後にアイテムは消費されるので、 回目の移動前にアイテムを消費しないことに注意してください。