题目描述
每个测试的时间限制:2 秒
每个测试的内存限制:256 兆字节
最初存在两个整数序列——一个是严格递增的,另一个是严格递减的。
严格递增序列是指 [x1<x2<⋯<xk] 的整数序列。严格递减序列是指 [y1>y2>⋯>yl] 的整数序列。注意,空序列和只有一个元素的序列既可以视为递增也可以视为递减。
它们被合并成一个序列 a,然后 a 被随机打乱。例如,对于递增序列 [1,3,4] 和递减序列 [10,4,2],可能的混洗结果序列 a 有 [1,2,3,4,4,10] 或 [4,2,1,10,4,3] 等。
现在输入这个打乱后的序列 a。
你的任务是找到两个合适的初始序列。一个应该是严格递增的,另一个应该是严格递减的。注意,空序列和只有一个元素的序列既可以视为递增也可以视为递减。
如果输入存在矛盾,无法将给定的 a 拆分成递增序列和递减序列,则输出 "NO"。
输入格式
第一行包含一个整数 n(1≤n≤2⋅105)—— 序列 a 的元素个数。
第二行包含 n 个整数 a1,a2,…,an(0≤ai≤2⋅105),其中 ai 是 a 的第 i 个元素。
输出格式
如果存在矛盾,无法将 a 拆分成递增和递减序列,则在第一行输出 "NO"。
否则,第一行输出 "YES",然后输出两个合适的序列。
- 第二行输出 ni —— 严格递增序列的元素个数。ni 可以为 0,此时递增序列为空。
- 第三行输出 ni 个整数 inc1,inc2,…,incni,按值递增的顺序排列(inc1<inc2<⋯<incni)—— 严格递增序列本身。如果 ni=0,则此行可以为空(或输出空行)。
- 第四行输出 nd —— 严格递减序列的元素个数。nd 可以为 0,此时递减序列为空。
- 第五行输出 nd 个整数 dec1,dec2,…,decnd,按值递减的顺序排列(dec1>dec2>⋯>decnd)—— 严格递减序列本身。如果 nd=0,则此行可以为空(或输出空行)。
必须满足 ni+nd=n,且输出的两个序列的并集是给定序列 a 的一个排列(当答案为 "YES" 时)。
5
1 2 3 4 5
。