测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A71607. 盒子

编程题 基础

题目描述

Yn 个盒子,第 i 个盒子的大小是 a[i], 小 Y 保证 a[i] 一定是 2 的若干次方,比如1,2,4,8,16,32,64,128,512,1024……,一个大小为 a[i] 的盒子的容量是 a[i]/2 ,就是说它可以装下总大小不超过 a[i]/2 的其他盒子,特别地,大小为 1 的盒子不能装下其他盒子。并且,装在盒子里的盒子也可以装其他盒子,比如,大小为 8 的盒子可以装下一个大小为 4 的盒子且大小为 4 的盒子事先已经装了一个大小为 2 的盒子。

现在小 Y 想知道,最少能有多少个不被其他盒子装下的盒子?

输入格式

第一行 1 个正整数 n,表示盒子的数量。

第二行 n 个正整数 a[i],表示每个盒子的大小,保证a[i] 一定是 2 的若干次方。

输出格式

一行一个正整数表示最少能有多少个不被其他盒子装下的盒子。

输入输出样例

输入 #1
5
1 2 1 1 8
输出 #1
1
输入 #2
3
1 1 1
输出 #2
3
输入 #3
6
1 1 1 4 1 2
输出 #3
3

说明/提示

【样例解释1】

图中盒子内部的灰色部分表示盒子不能用来装东西的一半容量,白色部分表示能用来装东西的一半容量,图中只有最大的盒子没有被装在其它盒子中,因此答案为 1

【样例解释2】

【样例解释3】

【数据规模】

本题共有 12 个测试点,每个测试点 10

对于全部测试点:1 \le n \le 100000, 1 \le a[i] \le 2^{60}

对于测试点1-3 :1 \le n \le 3

对于测试点4-5 :1 \le a[i] \le 4

对于测试点6-9 :1 \le n \le 1000

2^{60}=1152921504606846976