Official

B - Mex Editorial by sugarrr


\(0,1,\ldots,N\) に整数は \(N+1\) 個あるので、答えの上限は \(N\) であることがわかります。

よって、\(ans=0,1,2,\ldots,N\) について

\(A\)\(ans\) は含まれるか?

という問題を順番に解いていき、最初に含まれない値が見つかった時、その値を答えとすれば良いです。

計算量は \(O(N^2)\) です。

なお、bool 配列を用意するなどして \(O(N)\) で解くこともできます。

\(O(N^2)\) の実装例

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

signed main(){
    ll n;cin>>n;
    vector<ll>a(n);
    for(ll i=0;i<=n-1;i++)cin>>a[i];
    for(ll ans=0;ans<=n;ans++){
        bool ok=true;
        for(ll x:a){
            if(x==ans)ok=false;
        }
        if(ok){
            cout<<ans<<endl;
            return 0;
        }
    }
    return 0;
}

posted:
last update: