编程题
### 问题描述 传说中,有一座神秘的古城,里面藏有无数珍贵的宝石。这些宝石被分成了两个集合 $A$ 和 $B$,每个集合都被一个机关所守护。只有当两个机关同时打开时,才能进入古城的深处,获得那些珍贵的宝藏。 小蓝得到了这个消息,他决定前往古城寻宝。但是,他发现两个机关的密码是非常特殊的。密码是一些数字,这些数字被分成了两个集合 $A$ 和 $B$,每个集合都与机关中的一个数字相关联。而且,对于一个数字 $p_i$,如果它属于集合 $A$,那么 $a-p_i$ 必须属于集合 $A$;如果它属于集合 $B$,那么 $b-p_i$ 必须属于集合 $B$。 为了破解这个密码,小蓝需要对这些数字进行分组。他需要将这些数字分成两个集合 $A$ 和 $B$,使得满足上述条件。如果存在这样的分组,输出 `YES` 并输出一个长度为 $n$ 的 01 序列 $b_1,b_2,\dots,b_n$,其中 $b_i$ 表示第 $i$ 个数字属于集合 $A$ 还是集合 $B$。如果不存在这样的分组,输出 `NO`。 ### 输入格式 第一行包含三个整数 $n, a, b$,表示数字的数量以及机关两个数字的值 $(1 \leq n \leq 10^5, 1 \leq a, b \leq 10^9)$。 第二行包含 $n$ 个互不相同的整数 $p_1, p_2, \dots, p_n$,表示待分组的数字 $(1 \leq p_i \leq 10^9)$。 ### 输出格式 如果存在这样的分组,输出 `YES`,并在下一行输出一个长度为 $n$ 的 01 序列 $b_1,b_2,\dots,b_n$,其中 $b_i=0$ 表示第 $i$ 个数字属于集合 $A$,$b_i=1$ 表示第 $i$ 个数字属于集合 $B$。 如果不存在这样的分组,输出 `NO`。 ### 样例输入 ``` 5 6 9 1 3 2 4 5 ``` ### 样例输出 ``` YES 0 0 0 0 0 ```
查看答案
赣ICP备20007335号-2