第二个点就错了,本地样例是对的,请大佬们帮看看怎么了
#include<bits/stdc++.h>
using namespace std;
int n;
int sum[100010]={0};
void solve(){//处理进位
for(int i=0;i<=100010;++i){
if(sum[i]>1){
sum[i+1]+=sum[i]/2;
sum[i]%=2;
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;++i){
int x; cin>>x;
sum[x]++;
}
solve();
int pos,ans=0;
for(int i=100010;i>=0;--i)
if(sum[i]==1){
pos=i; break;//找到第一个有一的位
}
for(int i=0;i<=pos;++i)
if(sum[i]==0) ans++;
cout<<ans<<endl;
return 0;
}