#P17057. [SGU279] Bipermutations
[SGU279] Bipermutations
题目描述
一个 阶二重排列是对 个对象 的线性排列,并满足:
- 对每个 ,对象 出现在对象 之前;
- 所有带撇对象的相对顺序与所有不带撇对象的相对顺序相同。也就是说,对任意 , 在 前面当且仅当 在 前面。
对 ,定义对象
- 若 ,则 ;
- 若 ,则 。
不定义。令 为满足“对象 出现在对象 之前”的 的数量。
给定整数 ,请构造任意一个满足 的二重排列;若不存在,则报告无解。
输入格式
第一行包含一个整数 。第二行包含 个整数 。
输出格式
若无解,只输出一行 NO。
若有解,第一行输出 YES,随后输出二重排列中的 个对象。对象 输出为正整数 i,对象 输出为负整数 -i。数字之间用空格分隔,换行位置不限。
数据范围
- 对任何合法解必有
- 时间限制: 秒
- 内存限制: MiB
样例
输入
9
2 0 3 0 4 8 1 5 4
输出
YES
-6 -8 -9 6 -5 -3 8 9 -7 5 -1 -4 3 7 -2 1 4 2
满足条件的二重排列可能不唯一,可以输出任意一个。