自进入法贡森林(Fangorn Forest)以来,矮人吉姆利(Gimli)一直感到不安。这里的树木有些不对劲!因此,吉姆利想要到达森林边缘的其中一个营地。然而,为了感到安全,吉姆利在任何时候都需要能够看到所有的树木。幸运的是,矮人的视力非常好:他们可以看无限远,并且能看清每一个方向。
法贡森林形成了一个矩形 $F$,其边界与坐标轴平行,顶点分别位于 $(0, 0)$ 和 $(w, h)$。森林中的所有 $N$ 棵树都位于 $F$ 的内部,而所有 $C$ 个营地(编号从 $1$ 到 $C$)都位于 $F$ 的边界上。任何树木都是笔直向上生长的(“垂直于地图平面向外”),可以被视为一个点。因此,当且仅当连接吉姆利当前位置与某棵树的线段上没有其他树木时,吉姆利才能从他的位置看到这棵树。
从任何一个营地出发,吉姆利都可以看到所有的树木。最开始,他位于森林的内部,但不在任何一棵树的位置上(矮人是不爬树的),并且他能看到所有的营地和所有的树木。由于法贡森林非常古老,因此不存在三棵树共线的情况。
如果存在一条从吉姆利的初始位置到营地 $c$ 的路径 $\gamma$,使得在 $\gamma$ 上的任意一点他都能看到所有的树木,那么吉姆利就可以安全地到达营地 $c$。请编写一个程序,帮助吉姆利找到所有他可以安全到达的营地。
输入格式
第一行包含两个整数 $w$ 和 $h$,表示上述矩形 $F$ 的大小。
第二行包含两个整数 $x_G$ 和 $y_G$,表示吉姆利初始位置的坐标。
第三行包含一个整数 $C$,表示营地的数量。接下来的 $C$ 行描述这些营地;其中第 $i$ 行包含两个整数 $x_i$ 和 $y_i$,表示第 $i$ 个营地的坐标。
接下来的一行包含一个整数 $N$,表示树木的数量。接下来的 $N$ 行描述这些树木;其中每行包含两个整数 $x$ 和 $y$,表示一棵树的坐标。保证没有两棵树的坐标是相同的。
输出格式
第一行应包含吉姆利可以安全到达的营地数量 $m$。
如果 $m \neq 0$,第二行应按升序输出这些营地的编号。
子任务
对于所有测试用例,满足 $3 \le N \le 2\,000$,$1 \le C \le 10\,000$,且 $0 < w, h \le 10^9$。
- 子任务 1(30 分):$N \le 70$,$C \le 5$
- 子任务 2(20 分):树木构成一个凸多边形的顶点,且 $N \le 200$,$C \le 5$
- 子任务 3(30 分):$C \le 5$
- 子任务 4(20 分):无其他限制。
样例
样例输入 1
9 4 1 2 3 7 4 1 4 0 2 4 1 1 6 1 3 3 8 3
样例输出 1
2 1 3
样例输入 2
9 4 1 2 1 8 4 4 1 1 6 1 3 3 4 3
样例输出 2
0
说明
第一个样例的情况以及从吉姆利的起点 $G$ 到(安全)可达营地的可能路径:
请注意,吉姆利在移动过程中允许离开森林。然而,即使在森林外部,他也必须能够看到所有的树木——否则他也能到达第二个营地。
反馈
本题提供部分反馈,即你可以看到测试用例中某个固定子集的评测结果,且公开得分会提示你的实际得分(实际得分可能更高或更低)。