#P17450. PM8254 多边形整点查询

PM8254 多边形整点查询

题目描述

给定一个边均平行于坐标轴的简单多边形。多边形可以不是凸多边形,但不会自交;除了相邻边在公共端点处相交之外,不同边之间没有公共点。

考虑多边形内部以及边界上的所有整数格点,并按字典序排序:先按 xx 坐标从小到大排序,若 xx 相同,则按 yy 坐标从小到大排序。

接下来有若干询问。对于每个询问 kk,请输出排序后第 kk 个整数格点的坐标。排名从 11 开始。

如果多边形内部和边界上的整数格点总数少于 kk,输出 -1

输入格式

第一行一个整数 nxn_x,表示横坐标数组的长度。

第二行包含 nxn_x 个整数 x0,x1,,xnx1x_0,x_1,\ldots,x_{n_x-1},依次表示多边形各顶点的横坐标。

第三行一个整数 nyn_y,表示纵坐标数组的长度。

第四行包含 nyn_y 个整数 y0,y1,,yny1y_0,y_1,\ldots,y_{n_y-1},依次表示多边形各顶点的纵坐标。

保证 nx=ny=nn_x=n_y=n,并且 (xi,yi)(x_i,y_i) 按逆时针顺序给出多边形的各个顶点。

第五行一个整数 qq,表示询问数量。

接下来 qq 行,每行一个整数 kk,表示一次询问。

输出格式

第一行输出整数 qq

接下来输出 qq 行。对于第 ii 个询问:

  • 如果第 kik_i 个整数格点存在,输出两个整数 xxyy,表示其坐标;
  • 否则输出 -1

数据范围

  • 4n504\le n\le 50
  • 0xi,yi1090\le x_i,y_i\le 10^9
  • 多边形为简单正交多边形,所有顶点互不相同;
  • 1q501\le q\le 50
  • 1ki10181\le k_i\le 10^{18}

样例 1

输入

4
0 2 2 0
4
0 0 2 2
9
1
2
3
4
5
6
7
8
9

输出

9
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2