2841: 字体设计
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:2
解决:1
题目描述
现在,需要你协助某人开发某种新的Linux 下的中文字体。
现在,需要给上图里的黄点做「位置锚固」,然而有些黄点的位置可以由「插 值」确定,这样就可以减少锚固的数量。例如,在上图中,#46 #49 #52 #53 的 位置可以由#42 和#57 插值得到, 我就不需要去锚固它们,只需要固定#42 和#57 就可以了。这样可以给这个字减少至少12 字节。 抽象一下问题,现在给出数组a。定义ax可以被al 和ar插值得到为: * 存在l < x < r,使得al < ax < ar 或者al > ax >ar。 求最少的「锚固」元素的数目,使得非锚固元素都可以由其左右最靠近它的 锚固元素插值得到。并输出锚固元素的下标。
输入
输入文件第一行一个整数n,表示数组的大小(1 ≤ n ≤ 10^5)。 第二行为n 个整数a1,a2,...,an,表示数组中的元素(1 ai ≤ 10^9)。 保证所有ai互不相同。
输出
输出文件第一行包含一个整数,表示锚固元素的数目。 第二行包含n 个整数,表示锚固元素的下标,每2 个数之间用1 个空格隔开。
样例输入 复制
7
1 2 3 10 6 5 4
样例输出 复制
3
1 4 7
提示
in
8
3 4 2 1 8 5 7 6
out
7
1 2 4 5 6 7 8