#icpc2014summerday4j. [icpc2014summer_day4_j]Vongress

[icpc2014summer_day4_j]Vongress

题目描述

太郎君喜欢玩一个叫做 Vongress 的游戏。Vongress 是在一个有 nn 个顶点的凸多边形上进行的占领游戏。

在这个游戏中,mm 个玩家在凸多边形的内部各自放置一个棋子。棋子的位置由 xxyy 坐标表示,忽略了棋子的大小。

某个玩家的占领区域由他所放置的棋子最近的位置构成。玩家的得分是他的占领区域的面积。

太郎君通常记录下凸多边形的形状、棋子的位置和每个玩家的得分。但是有一天他忘记记录棋子的位置了。于是太郎决定根据凸多边形的形状和玩家的得分,来确定合理的棋子位置。

你的任务是代替太郎找出每个玩家的得分并且确定合理的棋子位置。


输入格式

输入按照以下格式给出:

n mn\ m
x_1 y_1x\_1\ y\_1
x_2 y_2x\_2\ y\_2
:
:
x_n y_nx\_n\ y\_n
r_1r\_1
r_2r\_2
:
:
r_mr\_m

其中,nn 表示凸多边形的顶点数, mm 表示玩家的数量。(x_i,y_i)(x\_i, y\_i) 表示凸多边形的顶点坐标, r_1,ldots,r_mr\_1, \\ldots, r\_m 表示各个玩家获得的得分比例。

数据范围

  • 3lenle1003\\le n \\le 100
  • 1lemle1001\\le m \\le 100
  • 104lex_i,y_ile104-10^4 \\le x\_i,y\_i \\le 10^4
  • 1ler_jle1001\\le r\_j \\le 100
  • 输入都是整数
  • 凸多边形的顶点 (x_i,y_i)(x\_i,y\_i) 按照逆时针顺序给出。

输出格式

按照以下格式输出 mm 个棋子的位置:

x_1 y_1x'\_1\ y'\_1
x_2 y_2x'\_2\ y'\_2
:
:
x_m y_mx'\_m\ y'\_m

(x_k,y_k)(x'\_k, y'\_k) 表示第 kk 个玩家的棋子位置。

输出要满足以下条件:

  • 棋子在凸多边形的内部,可以位于边界上。
  • 任意两个棋子之间的距离大于 10510^{-5}
  • 假设凸多边形的面积为 SS,则第 kk 个玩家占领区域的面积与总得分的比例的绝对误差或相对误差不超过 10310^{-3}

示例输入1

4 5
1 1
-1 1
-1 -1
1 -1
1
1
1
1
1```

### 示例输出1

```plain
0.0000000000 0.0000000000
0.6324555320 0.6324555320
-0.6324555320 0.6324555320
-0.6324555320 -0.6324555320
0.6324555320 -0.6324555320```

如下图所示放置棋子,所有玩家获得相同的得分。黑色线段表示凸多边形,红色点表示玩家的棋子,蓝色线段表示玩家的占领区域的边界。

![](/img/other/jag2014_summer_day4/sample1.png)

---

### 示例输入2

```plain
4 3
1 1
-1 1
-1 -1
1 -1
9
14
9```

### 示例输出2

```plain
-0.5 -0.5
0 0
0.5 0.5```

根据下图的方案来放置棋子即可。

![](/img/other/jag2014_summer_day4/sample2.png)

---

### 示例输入3

```plain
8 5
2 0
1 2
-1 2
-2 1
-2 -1
0 -2
1 -2
2 -1
3
6
9
3
5```

### 示例输出3

```plain
1.7320508076 -0.5291502622
1.4708497378 -0.2679491924
-0.4827258592 0.2204447068
-0.7795552932 0.5172741408
-1.0531143674 0.9276127521```

根据下图的方案来放置棋子即可。

![](/img/other/jag2014_summer_day4/sample3.png)