P16112 「o.OI R-1」青蛙平衡树

题目描述

小 w 有一个二维点集 $S$,初始为空。 小 c 依次往 $S$ 里面加入互不相同的 $n$ 个点 $(x_i,y_i)$。 小 c 会在每次操作后告诉小 w,当前 $S$ 是否中心对称。 现在小 w 想知道任意一个合法的操作序列,如果不存在则报告无解。 --- 称一个点集 $S$ 中心对称当且仅当: 平面上存在一个点 $(a,b)$,使得对于任意 $(x,y)\in S$,满足 $(2a-x,2b-y)\in S$。

输入格式

第一行一个正整数 $n$ 表示操作次数。 第二行 $n$ 个整数 $a_i$,其中 $a_i=1$ 表示加入前 $i$ 个点后 $S$ 中心对称,否则表示不中心对称。

输出格式

如果无解,输出 `No`。 否则第一行输出 `Yes`,接下来 $n$ 行每行两个整数 $(x_i,y_i)$。 你需要保证 $|x_i|,|y_i|\le10^9$,且 $(x_i,y_i)$ 互不相同。

说明/提示

**「样例解释」** ![](https://cdn.luogu.com.cn/upload/image_hosting/9ohodkkw.png) **本题采用捆绑测试。** 对于所有测试数据,保证:$1\le n\le 10^3,a_i\in\{0,1\}$。 |子任务|$n$| 特殊性质 |分值| |:-:|:-:|:-:|:-:| | $0$ | $\le2$ | | $5$ | | $1$ | | $a_x=1\Leftrightarrow x\le n$ 且 $x=2^k(k\in\N)$ | $10$ | | $2$ | | 保证数据随机 | $10$ | | $3$ | | | $75$ |