CF1070M Algoland and Berland
题目描述
很久以前,Algoland和Berland是一个国家,但那个时代早已过去。现在它们是两个国家,但他们的城市散布在一个共同的领土上。
所有城市都表示为一个平面直角坐标系的一个点。Algoland由 $a$ 个城市组成,编号从 $1$ 到 $a$。Algoland第 $i$ 个城市的坐标为 $(xa_i,ya_i)$ 。同样的,Berland由 $b$ 个城市组成,编号从 $1$ 到 $b$。Berland第 $j$ 个城市的坐标是 $(xb_j,yb_j)$ 。保证两个国家的 $a+b$ 个城市里没有三个城市在一条直线上。
作为联合两国的第一步,Berland决定修建几条双向的高速公路。每条高速公路将是一条线段,从Berland的一个城市开始,到Algoland的一个城市结束。除了高速公路的起点或终点,高速公路不能在任何一点上相互交叉。此外,高速公路必须连接所有 $a+b$ 个城市。这意味着人们可以通过高速公路从任何一个城市到达任何其他的城市。请注意,所有的高速公路都是双向的,这意味着人们可以在每条高速公路上双向行驶。
每一个Berland城市的市长都分配了一个预算来建造从这个城市出发的高速公路。因此,你会得到数 $r_1,r_2,\dots,r_b$ ,其中 $r_j$ 是要从第 $j$ 个Berland城市开始的高速公路的数量。市长们分配的预算是非常紧张的,只有建设所有高速公路必要的代价。也就是 $r_1+r_2+\dots+r_b=a+b-1$ 。
请你帮助Berland建设高速公路,有以下几个要求:
- 每条高速公路都是一条连接Berland城市和Algoland城市的线段。
- 没有任何两条高速公路有交点,除了交点是两条公路的起点或终点。
- 高速公路必须连接所有 $a+b$ 个城市。
- 有 $r_j$ 条高速公路从第 $j$ 个Berland城市开始。
输入格式
本题有多组测试数据。
第一行输入一个整数 $t$ $(1\le t\le3000)$ ,代表有 $t$ 组测试数据。
每个测试数据的第一行有两个整数,分别为 $a$ 和 $b$ 。
第二行有 $b$ 个整数,第 $i$ 个整数表示 $r_i$ $(1\le r_i\le a)$ 。
接下来的 $a$ 行,每行两个整数 $xa_i,ya_i$ 。
再接下来的 $b$ 行,每行两个整数 $xb_i,yb_i$ 。
具体意义见上文描述。
输出格式
对于每个测试数据,第一行输出`YES`或`NO`,代表能否满足要求。
如果能满足要求,输出 $a+b-1$ 行,每行有两个整数 $j$ 和 $i$,表示从第 $j$ 个Berland城市往第 $i$ 个Algoland城市建设一条高速公路。如果有多组方法,请输出其中的一个