cho dãy số A gồm n phần tử nguyên dương. Tìm số nguyên dương (lớn hơn 0) bé nhất không xuất hiện trong dãy. Dữ liệu vào: minnum.inp có cấu trúc như sau: Dòng 1 ghi số n (n≤10^6). Dòng tiếp theo ghi n phần tử (0<ai≤10^6). Kết quả ghi vào minnum.out ghi số nguyên dương bé nhất không xuất hiện trong dãy A. Ví dụ: Minnum.inp Minnum.out 4 2 1 1 3 4 6 7 4 3 5 6 1 2

1 câu trả lời

#include<bits/stdc++.h>

using namespace std;
long long n,a[100001];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);
    a[0]=0;
    for(int i=1;i<=n;i++)
    {
        if(a[i]>a[0])
        {
            if(a[i]-a[0]>1)
            {
                cout<<a[i]-1;
                return 0;
            }
            if(a[i]!=a[i+1]) a[0]++;
        }
    }
    if(a[0]==a[n]) cout<<a[n]+1;
    return 0;
}

Mk không biết có đúng không nhưng mk thử 2 test của bạn thì thấy đúng(Nếu mà sai thì mong bạn thông cảm)