#U1516JB3. Mowing the Field
Mowing the Field
农夫约翰在管理他的农场的各个方面都非常可靠,除了一个:他不擅长及时或合乎逻辑地割草。
农场是一个由方形单元格组成的大型 2D 网格。FJ 在时间 t=0 时从其中一个单元开始,在该单元中修剪草,使其最初是唯一一个割草的单元。FJ 的剩余割草模式由一系列 N 语句描述。例如,如果第一个语句是“W 10”,那么对于时间 t=1 到 t=10(即接下来的 10 个时间单位),FJ 将向西跨一个单元格,沿途修剪草。完成这一系列步骤后,他将在时间 t=10 时向西移动 10 个单元格,并在沿途的每个单元格中割草。
FJ 的进度如此缓慢,以至于他割的一些草可能会在他完成所有割草之前重新长出来。在时间 t 被切割的任何草段将在时间 t+x 重新出现。
FJ 的割草模式可能会让他多次重新访问同一个方格,但他说他从未遇到过已经割草的方格。也就是说,每次他访问一个方格时,他最近一次访问同一个方格的时间必须至少提前 x 个单位,这样草才能重新长出来。
请确定 x 的最大可能值,以便 FJ 的观察保持有效。
输入格式(文件 mowing.in):
输入的第一行包含N(1≤N≤100)。其余 N 行中的每一行都包含一个语句,格式为“D S”,其中 D 是描述方向的字符(N=北,E=东,S=南,W=西),S 是数字在那个方向上采取的步骤(1≤S≤10)。
输出格式(文件 mowing.out):
请确定 x 的最大值,以使 FJ 永远不会踩到有割草的方格。如果 FJ 从不多次访问任何方格,请输出 -1。
样例输入:
6
N 10
E 2
S 3
W 4
S 5
E 8
样例输出:
10
在这个例子中,FJ 在时间 17 踩到了一个他早先在时间 7 踩过的方格;因此,x 最多只能为 10,否则他第一次访问时的草还不会长回来。他还在时间 26 踩到了一个方格,他也在时间 2 访问过该方格;因此x 也必须最多为 24。由于这两个约束中的第一个更严格,我们看到x 最多可以为 10。