Problem2046--老生带新生

2046: 老生带新生

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 171  Solved: 32
[Status] [Submit] [Creator:]

Description

为了更好地帮助新同学了解编程,编绘童年提出了一种“老生带新生”的方案,简单来说就是“结对子”,具体如下:

首先从所有学生中选出 n 位天赋异禀的同学,然后对他们每个人根据课程进度、知识点掌握情况、课堂表现、比赛情况计算一个综合的能力值评分(第 i 位同学的能力值评分为 Ai)。

然后对这 n 位同学进行配对,要求每位同学最多只能和一位同学结对子。

同时,对于第 i 和 j 两位同学,只有当其中一位同学的能力值达到了另一位同学的能力值的 2 倍的时候(即 Ai ≥ 2 × Aj 或 Aj ≥ 2 × Ai 时)两位同学之间才能进行配对,即 “结对子”。(这是因为如果你的能力值不够另一位同学能力值 2 倍的话,不能够确保他的问题你能够给他解答清楚)

问:最多能结成几对?

Input

输入的第一行包含一个整数 n(1 ≤ n ≤ 200,000),表示选出的人数。

输入的第二行包含 n 个整数,两两之间以一个空格分隔,依次表示每位同学的能力值 A1, A2, A3, ……, An(1 ≤ Ai ≤ 1,000,000,000)。

Output

输出一个整数,表示最多能有多少对人能够结成对子。

Sample Input Copy

【样例输入1】
5
3 5 6 4 7
【样例输出1】
1
【样例输入2】
5
1 4 2 16 8
【样例输出2】
2
【样例输入3】
4
1 4 2 3
【样例输出3】
2

HINT

样例解释:
样例1:最多只能选出 1 对,可选的方案有 2 种:
    ① 选择能力值为 3 和 6 的两位同学结成一对
    ② 选择能力值为 3 和 7 的两位同学结成一对
样例2:任意两个人之间都可以结对子,但是因为总共只有 5 个人,所以最多只能结成 5/2 = 2 对;
样例3:选择能力值为1和3的两位同学结成一对;选择能力值为2和4的两位同学再结成另一对。

数据规模与约定:
· 对于 30% 的数据,1 ≤ n ≤ 1,000,1 ≤ Ai ≤ 1,000
· 对于 60% 的数据,1 ≤ n ≤ 10,000,1 ≤ Ai ≤ 1,000,000
· 对于 100% 的数据,1 ≤ n ≤ 200,000,1 ≤ Ai ≤ 1,000,000,000

Source/Category