1 条题解

  • 0
    @ 2024-10-16 19:41:03
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    map<ll,int>vis;
    int n,x;
    int main()
    {
    	freopen("ivan.in","r",stdin);
    	freopen("ivan.out","w",stdout);
        scanf("%d",&n);
        int cnt=0,maxn=0;
        while(n--)
        {
            scanf("%d",&x);
            vis[x]++;
            if(vis[x]==2)
            {
                ll i=x;
                while(vis[i]==2)//进位
                {
                    vis[i]-=2;
                    vis[i+1]++;
                    i++;
                }
            }
        }
        map<ll,int>::iterator it;
        for(it=vis.begin();it!=vis.end();it++)
        {
            if(it->second!=0)
                {
                    cnt++;//记录1的个数
                    if(it->first>maxn)//记录最高位
                        maxn=it->first;
                }
        }
        
        printf("%d",maxn+1-cnt);
        return 0;
    }
    
    • 1

    信息

    ID
    1974
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    80
    已通过
    6
    上传者