Duff and Weight Lifting
题意:举重,计算她放下的次数。如果找不到wi+wi+1+…!=2k,那么将举起的重量全部放下,重新开始。
21+21=22;
22+22=23;
23+23=24;
……
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<map>
using namespace std;
const int Max=1e6+500;
int main()
{
long long n;
long long num[Max]={0};
while(~scanf("%lld",&n))
{
long long w,ans=0;
memset(num,0,sizeof(num));
for(int i=0; i<n; i++)
{
scanf("%lld",&w);
num[w]++;
}
for(int i=0; i<=Max; i++)
{
num[i+1]+=num[i]/2;
ans+=num[i]%2;
}
printf("%lld\n",ans);
}
return 0;
}