小红的数字对对碰
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\,\,\,\,\,\,\,\,\,\,小红有一个长度为 n 的数组 a ,第 i 位的值为 a_i 。她想通过以下方式,尽可能地减少数组长度。
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,● 当 len(a)>1 且存在二元组 (i,j) ,满足 i<ja_i + a_j \leq 0 ,则可消去 a_ia_j
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,● len(a)>1 且存在二元组 (i,j) ,满足 i<ja_i \oplus a_j \leq 0 ,则可消去 a_ia_j
\,\,\,\,\,\,\,\,\,\,请你输出最小化后的数组的长度。
\,\,\,\,\,\,\,\,\,\,\oplus 表示按位异或,数字以 32 位补码形式存储。

输入描述:

\,\,\,\,\,\,\,\,\,\,第一行输入一个整数 n\ (\ 1 \leq n \leq 10^5\ ) 代表初始元素数量。
\,\,\,\,\,\,\,\,\,\,第二行输入 n 个整数 a_1,a_2,\dots,a_n\ (-10^9 \leq a_i \leq 10^9) 代表初始的数组。

输出描述:

\,\,\,\,\,\,\,\,\,\,在一行上输出一个整数,代表最小化后的数组的长度。
示例1

输入

复制
5
-3 -1 0 2 4

输出

复制
1

说明

a_1a_4 按照方式一消除。
a_2a_5 按照方式二消除。