#P7191. [Ural1624]Go out of here!

[Ural1624]Go out of here!

题目描述

两名侦察兵在执行绝密任务时被抓进了监狱。

监狱是一个 W×HW\times H 的矩形网格。相邻两个格子之间要么有门、可以通过,要么有墙、无法通过。监狱最外围一定全部是墙。

侦察兵暂时失明,而且他们不知道自己在监狱中的绝对坐标。两人之间也无法互相通信,即使处于同一个格子里也无法知道对方的位置。

幸运的是,他们体内都有发射器,可以向总部报告。

总部要求两名侦察兵轮流执行操作:尝试向北、南、东、西中的某个方向移动一步,并报告:

  1. 尝试的方向;
  2. 移动是否成功。

如果移动成功,侦察兵进入相邻格;如果失败,则留在原地。

奇数编号的报告来自第一名侦察兵,偶数编号的报告来自第二名侦察兵。

现在给出所有报告。你需要判断:在处理多少条报告之后,总部第一次能够唯一确定两名侦察兵的绝对坐标

此外,报告本身也可能互相矛盾。若存在矛盾,必须输出第一条导致矛盾的报告编号;即使在更早时刻已经能够唯一定位两名侦察兵,也仍应优先报告后续出现的错误。

输入格式

第一行包含三个整数:

W,H,K,W,H,K,

其中:

  • WW 为监狱东西方向的格子数;
  • HH 为监狱南北方向的格子数;
  • KK 为报告数量。

满足:

2WH150,2\le W\cdot H\le150, 1K105.1\le K\le10^5.

接下来 KK 行,每行是一条长度为 2 的报告。

第一个字符是:

  • N:向北;
  • S:向南;
  • E:向东;
  • W:向西。

第二个字符是:

  • +:移动成功;
  • -:移动失败。

奇数编号报告属于第一名侦察兵,偶数编号报告属于第二名侦察兵。

输出格式

共有三种情况。

1. 可以唯一确定两名侦察兵的位置

输出:

The scouts are safe at step number X

其中 XX 是第一次能够唯一确定两人坐标时的报告编号。

2. 所有报告都没有矛盾,但仍无法唯一确定坐标

输出:

There is not enough data

3. 报告中存在矛盾

输出:

A mistake has been made at step number X

其中 XX 是第一条与之前信息不相容的报告编号。

注意:即使在第 XX 条错误报告出现之前,侦察兵的位置已经能够唯一确定,也仍然应该输出错误信息。

样例 1

2 1 4
E+
W-
N-
S-
The scouts are safe at step number 2

样例 2

2 1 4
N-
W-
N-
S-
There is not enough data

样例 3

2 1 4
N-
W-
N-
S+
A mistake has been made at step number 4