[AtCoder] HHKB プログラミングコンテスト 2020 C – Neq Min

2020年12月12日

問題

方針

まず初めに仮の最小値 \( d \) を \( d = 0 \) とします。\( i \) 番目の最小値は、\( d \) が \( p_1, \cdots, p_i \) のいずれとも一致しなければ良いので、一致しなくなるまで \( d \) をインクリメントします。一致するかどうはセットを用いて調べます。

コード

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

int main() {
    int N;
    cin >> N;
    int p[N];
    set<int> s;
    for (int i = 0; i < N; i++) {
        cin >> p[i];
    }
    int best = 0;
    for (int i = 0; i < N; i++) {
        s.insert(p[i]);
        while (s.count(best)) {
            best++;
        }
        cout << best << "\n";
    }
    return 0;
}