#P0830. 营地巡逻员

营地巡逻员

题目描述

训练营有一块长方形营地,可以看成一个 nn 行 mm 列的方格地图。左上角是第 11 行第 11 列,右下角是第 nn 行第 mm 列。

巡逻员一开始站在第 xx 行第 yy 列。接下来有 qq 条巡逻指令,每条指令包含一个方向和一个步数:

  • U k:向上走 kk 步;
  • D k:向下走 kk 步;
  • L k:向左走 kk 步;
  • R k:向右走 kk 步。

巡逻员不能走出营地。如果某条指令还没有走完就到达了边界,那么他会停在边界上,剩下的步数都记为“无效步数”。

请你输出所有指令执行完后,巡逻员所在的位置,以及总共有多少步因为撞到边界而无效。

输入格式

第一行输入五个整数 n,m,x,y,qn,m,x,y,q,表示营地大小、初始位置和指令数量。

接下来 qq 行,每行输入一个字符 opop 和一个整数 kk,表示一条巡逻指令。

输出格式

输出一行,三个整数,分别表示最终所在的行、列,以及无效步数总和。

样例输入

5 6 3 3 5
U 2
L 5
D 4
R 10
U 1

样例输出

4 6 8

样例解释

初始位置为 (3,3)(3,3)。

  • U 2 后到达 (1,3)(1,3),没有无效步数;
  • L 5 最多只能向左走 22 步到达 (1,1)(1,1),剩下 33 步无效;
  • D 4 后到达 (5,1)(5,1),没有无效步数;
  • R 10 最多只能向右走 55 步到达 (5,6)(5,6),剩下 55 步无效;
  • U 1 后到达 (4,6)(4,6),没有无效步数。

最终位置为 (4,6)(4,6),无效步数总和为 3+5=83+5=8。

数据范围

对于所有测试数据,满足:

  • 1≤n,m≤1091 \le n,m \le 10^9
  • 1≤x≤n1 \le x \le n
  • 1≤y≤m1 \le y \le m
  • 1≤q≤2000001 \le q \le 200000
  • 1≤k≤1091 \le k \le 10^9
  • opop 只可能是 U、D、L、R