#joi2016hod. [joi2016ho_d]縄張り (Territory)

[joi2016ho_d]縄張り (Territory)

翻译

你住在一座由南北方向非常长的道路和东西方向非常长的道路交叉而成的城市中。相邻的两条南北方向的道路之间的距离为1公里。相邻的两条东西方向的道路之间的距离也为1公里。

这座城市有一个市政厅。用坐标(0,0)(0, 0)表示市政厅所在的交叉点。城市的交叉点可以用两个整数i,ji, j表示,即交叉点(i,j)(i, j)表示从交叉点(0,0)(0, 0)向东移动ii公里(当i<0i < 0时向西移动i-i公里),向北移动jj公里(当j<0j < 0时向南移动j-j公里)后到达的交叉点。

在市政厅饲养着一只名叫Joy的狗。Joy计划了连续KK天的散步。散步计划如下:

  • 在第一天的早上,Joy位于交叉点(0,0)(0, 0)。Joy在交叉点(0,0)(0, 0)做上标记。除了(0,0)(0, 0)之外,Joy没有在其他交叉点做标记。
  • 每天的中午进行一次散步。每次散步由NN个步骤组成。在每个步骤中,Joy从一个交叉点移动到相邻的交叉点,并在目的地做上标记。不管是哪一天,Joy的移动方式是一样的。
  • 在中午的移动结束后,Joy在当前的交叉点休息直到第二天早上。市政厅讨论了Joy根据KK天的散步形成的领地。当Joy在四个相邻交叉点(a,b),(a+1,b),(a+1,b+1),(a,b+1)(a, b), (a + 1, b), (a + 1, b + 1), (a, b + 1)中至少标记过一次时,围绕着这四个交叉点形成的区域属于Joy的领地。

你需要编写一个程序来计算从Joy的散步计划中可以得到的领地区域的数量。

任务

给定Joy的散步计划,编写一个程序来计算Joy的领地区域的数量。


输入

从标准输入读取以下内容:

  • 第一行包含两个整数 NNKK,用空格分隔,表示每天有NN个步骤,散步计划持续KK天。
  • 第二行包含长度为NN的字符串SS,表示散步计划的具体内容。字符串SS的第pp个字符(1pN1 \le p \le N)为CpC_p,可以是ENWS中的一个。这些字符表示以下含义:
    • 如果字符CpC_pE,表示在第pp个步骤中向东移动。
    • 如果字符CpC_pN,表示在第pp个步骤中向北移动。
    • 如果字符CpC_pW,表示在第pp个步骤中向西移动。
    • 如果字符CpC_pS,表示在第pp个步骤中向南移动。对于坐标(i,j)(i, j)的交叉点,东邻、北邻、西邻、南邻的交叉点分别为(i+1,j)(i+1, j)(i,j+1)(i, j+1)(i1,j)(i-1, j)(i,j1)(i, j-1)

输出

将结果输出到标准输出中,输出Joy的领地区域的数量(一个整数)。


限制条件

所有输入数据都满足以下条件:

  • 1N100,0001 \le N \le 100,000
  • 1K1,000,000,0001 \le K \le 1,000,000,000

子任务

子任务1 [5分]

满足以下条件:

  • N50N \le 50
  • K=1K = 1

子任务 2 [10 分]

满足K=1K = 1

子任务 3 [23 分]

满足N50N \le 50

子任务 4 [62 分]

没有额外的限制。


示例输入1

12 1
EENWSEEESWWS

示例输出1

3

在这个示例中,散步只持续了一天。第一天,Joy离开市政厅并移动如下图所示。

黑色圆圈表示Joy标记过的交叉点,白色圆圈表示Joy未标记的交叉点,双重圆圈表示市政厅所在的交叉点,数字表示每个步骤。

Joy的移动路线

根据输入示例1,在斜线部分标记的3个区域属于Joy的领地。

输入示例1中Joy的领地