题目描述
有一个点集 S,要满足下面三类限制:
P x y
,要求 (x,y)∈S。
H x y
,要求对任意 y0,(x,y0)∈S 当且仅当 (x,y−y0)∈S。
V x y
,要求对任意 x0,(x0,y)∈S 当且仅当 (x−x0,y)∈S。
求符合要求的 S 元素数最小值。
输入格式
输入的第一行是 n 表示操作个数。
之后 n 行每行首先是一个字符,然后输入两个整数,表示一个限制。
输出格式
输出一行一个整数,如果存在有限集 S 符合题意则输出该集合元素数,否则输出 −1。
样例
样例输入 1
8
H -1 3
P 2 2
V 0 1
V 2 2
P 1 1
V 0 1
V 800 800
V 802 800
样例输出 1
6
样例输入 2
4
P 1 2
H 1 6
V 0 4
V 3 4
样例输出 2
-1
提示
【样例 1 解释】
由 P 1 1
和 V 0 1
,也就是 (1,1)∈S 和 (x,1)∈S⟺(0−x,1)∈S 可知 (−1,1)∈S。
接下来将 (−1,1)∈S 代入 H -1 3
可得 (−1,2)∈S。
分别将 (−1,2),(2,2)∈S 代入 V 2 2
可得 (3,2),(0,2)∈S。
最终 S 至少要有 (1,1),(−1,1),(−1,2),(0,2),(2,2),(3,2) 六个点。
【样例 2 解释】
将 (1,2) 代入 H 1 6
,得 (1,4)∈S。
接下来将 (x,4) 代入 V 0 4
,可得 (−x,4)∈S。
然后将 (−x,4) 代入 V 3 4
,可得 (x+3,4)∈S。
因此 (1,4),(4,4),(7,4),… 都在 S 内,S 是无限集。
【数据范围】
m 表示 H 类限制和 V 类限制数总和。
Subtask |
n≤ |
m≤ |
x,y∈ |
特殊性质 |
依赖子任务 |
分值 |
1 |
|
0 |
|
S 有限 |
|
5 |
2 |
=3 |
=2 |
[−400,400] |
|
3 |
100 |
10 |
[505,1000] |
S 有限 |
20 |
4 |
[0,210] |
|
2 |
10 |
5 |
6.4×105 |
|
[−400,400] |
20 |
6 |
|
|
S 有限 |
1,3 |
15 |
7 |
|
4,5,6 |
25 |
上述表格中,留空表示该栏和全部数据的限制相同。
对于全部数据,输入皆为整数,0≤n,m≤106,x,y∈[−103,103]。