#P6576. [BalticOI 2017] Plus Minus

[BalticOI 2017] Plus Minus

题目背景

物理学家马修正在研究硅基矩形微芯片的量子电动力学。

题目描述

这一块芯片的大小为 n×mn \times m ,可以分成 n×mn \times m 个电子。
我们都知道电子的状态只有正电 + 和负电 -
所以,每一个电子都只有一个状态,+ 或者 -
马修不知道每个电子的状态,但他可以进行 kk 次测量。
ii 次测量他可以得到 (yi,xi)(y_i,x_i) 这个电子的状态 sis_i
sis_i+ 或者 -
马修还知道,在任意一个 2×22\times2 的大小的电子块中,拥有 + 的电子和拥有 - 的电子数量相等。
然后他找到了您,想让您给出有多少种电子排列的形式满足测量的结果和上述要求。
答案对 109+710^9+7 取模。

输入格式

第一行三个整数 n,m,kn,m,k 代表芯片的大小和测量次数。
接下来 kk 行每行一个字符 sis_i 代表这次测量得到的状态和 yi,xiy_i,x_i 代表测量的位置。

输出格式

一行一个整数代表有多少种电子排布的形式。
答案对 109+710^9+7 取模。

2 4 4
+ 1 1
- 1 2
+ 1 3
- 1 4
2
3 3 3
- 2 1
+ 2 3
+ 3 3
0

提示

样例说明

对于样例 11,有以下 22 种情况:

+-+-
+-+-

+-+-
-+-+

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(12 pts):n,m5n,m \le 5
  • Subtask 2(42 pts):n,m1000n,m \le 1000
  • Subtask 3(46 pts):无特殊限制。

对于 100%100\% 的数据,1n,m1091 \le n,m \le 10^90k1050 \le k \le 10^51yin1 \le y_i \le n1xim1 \le x_i \le m

说明

翻译自 BOI 2017 D2 T3 Plus Minus。
翻译者:@一只书虫仔