蒟蒻求助CF水题
查看原帖
蒟蒻求助CF水题
398190
Celestial_Intertwine楼主2021/8/20 08:49

第二个点就错了,本地样例是对的,请大佬们帮看看怎么了

#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;
}
2021/8/20 08:49
加载中...