#P16104. [2022国家队训练南京站]distance

[2022国家队训练南京站]distance

题目描述

二维平面上有 nn 个点,第 ii 个点坐标为 (xi,yi)(x_i,y_i)

同时给定 nn 个移动向量,第 ii 个向量为 (ui,vi)(u_i,v_i)。需要给每个点恰好分配一个向量,每个向量也恰好使用一次。也就是说,需要找到一个 nn 阶排列 pp,并让第 ii 个点移动向量 (upi,vpi)(u_{p_i},v_{p_i})

移动后,希望任意两个点之间的欧几里得距离都不会变小。

如果存在这样的方案,还需要在所有满足条件的方案中,最大化所有点对移动后距离平方之和。若只输出满足距离不变小的方案但不是最优方案,可以获得一半分数。

输入格式

第一行输入一个整数 nn

接下来 nn 行,每行两个整数 xi,yix_i,y_i,表示点坐标。

再接下来 nn 行,每行两个整数 ui,viu_i,v_i,表示移动向量。

输出格式

若不存在满足要求的方式,输出一行:

No

否则,第一行输出:

Yes

第二行输出 nn 个整数 p1,p2,,pnp_1,p_2,\ldots,p_n,表示第 ii 个点使用第 pip_i 个向量。

注意:spj 对大小写敏感。

样例 1

输入

2
1 1
-1 -1
-1 -1
1 1

输出

Yes
2 1

样例 2

输入

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

输出

Yes
1 3 5 2 4

数据范围与限制

  • n500n\le 500
  • xi,yi,ui,vi104|x_i|,|y_i|,|u_i|,|v_i|\le 10^4

子任务:

子任务 分数 限制
1 20 n10n\le 10
2 10 n20n\le 20
3 20 n50n\le 50
4 34 n150n\le 150
5 16 无特殊限制