CF596C Wilbur and Points
题目描述
威尔伯正在研究一组坐标平面上的 $n$ 个点。这些点坐标的所有分量都是非负整数。更重要的是,如果点 $(x, y)$ 属于这个集合,那么所有满足 $0 \le x' \le x$ 和 $0 \le y' \le y$ 的点 $(x', y')$ 也会在这个集合中。
威尔伯现在想给这些点编号,从 $1$ 到 $n$ 各不相同。为了让编号更加美观,威尔伯设置了一个条件:如果某个点 $(x, y)$ 被分配了编号 $i$,那么所有满足 $x' \ge x$ 且 $y' \ge y$ 的点 $(x', y')$ 的编号不能小于 $i$。例如,对于点集 $(0, 0)$、$(0, 1)$、$(1, 0)$ 和 $(1, 1)$,有两种美观的编号方式,分别是 $1, 2, 3, 4$ 和 $1, 3, 2, 4$。
威尔伯的朋友给他出了一个难题:对于每个点定义一个特殊值 $s(x, y) = y - x$。现在他给了威尔伯一些数 $w_1, w_2, \ldots, w_n$,并要求找到一种美观的编号,使得编号为 $i$ 的点的特殊值满足 $s(x_i, y_i) = y_i - x_i = w_i$。
威尔伯需要你的帮助来解决这个问题。
输入格式
- 第一行是一个整数 $n$,表示点的数量($1 \le n \le 100000$)。
- 接下来的 $n$ 行,每行有两个整数 $x$ 和 $y$,表示一个点的坐标 $(x, y)$($0 \le x, y \le 100000$)。保证所有点互不相同,并且若某点出现在输入中,所有满足条件的点也必然在输入中。
- 最后一行包含 $n$ 个整数,第 $i$ 个整数是 $w_i$($-100000 \le w_i \le 100000$),表示编号为 $i$ 的点期望的特殊值。
输出格式
- 如果存在一种符合条件的编号方式,使得 $s(x_i, y_i) = y_i - x_i = w_i$,输出 `YES`。否则,输出 `NO`。
- 如果存在解,接下来输出 $n$ 行,第 $i$ 行输出获得编号 $i$ 的点的坐标。如果有多种解答,输出任意一种即可。
说明/提示
在第一个样例中,点 $(2, 0)$ 获得编号 $3$,点 $(0, 0)$ 编号为 $1$,点 $(1, 0)$ 编号为 $2$,点 $(1, 1)$ 编号为 $5$,点 $(0, 1)$ 编号为 $4$。通过验证,这种编号符合美观条件,并且满足 $y_i - x_i = w_i$。
在第二个样例中,点集中的特殊值为 $0, -1, -2$,而朋友给的序列为 $0, 1, 2$,因此不存在满足条件的解答。
**本翻译由 AI 自动生成**