// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
// Function for finding the first
// missing positive number
int firstMissingPositive(int arr[], int n)
{
// Loop to traverse the whole array
for (int i = 0; i < n; i++) {
// Loop to check boundary
// condition and for swapping
while (arr[i] >= 1 && arr[i] <= n
&& arr[i] != arr[arr[i] - 1]) {
swap(arr[i], arr[arr[i] - 1]);
}
}
// Checking any element which
// is not equal to i+1
for (int i = 0; i < n; i++) {
if (arr[i] != i + 1) {
return i + 1;
}
}
// Nothing is present return last index
return n + 1;
}
// Driver code
int main()
{
int arr[] = { 2, 3, -7, 6, 8, 1, -10, 15 };
int n = sizeof(arr) / sizeof(arr[0]);
int ans = firstMissingPositive(arr, n);
cout << ans;
return 0;
}
// This code is contributed by Harsh kedia
Ly8gQysrIHByb2dyYW0gZm9yIHRoZSBhYm92ZSBhcHByb2FjaAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmN0aW9uIGZvciBmaW5kaW5nIHRoZSBmaXJzdAovLyBtaXNzaW5nIHBvc2l0aXZlIG51bWJlcgppbnQgZmlyc3RNaXNzaW5nUG9zaXRpdmUoaW50IGFycltdLCBpbnQgbikKewoJCgkvLyBMb29wIHRvIHRyYXZlcnNlIHRoZSB3aG9sZSBhcnJheQoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQoJCS8vIExvb3AgdG8gY2hlY2sgYm91bmRhcnkKCQkvLyBjb25kaXRpb24gYW5kIGZvciBzd2FwcGluZwoJCXdoaWxlIChhcnJbaV0gPj0gMSAmJiBhcnJbaV0gPD0gbgoJCQkmJiBhcnJbaV0gIT0gYXJyW2FycltpXSAtIDFdKSB7CgkJCXN3YXAoYXJyW2ldLCBhcnJbYXJyW2ldIC0gMV0pOwoJCX0KCX0KCgkvLyBDaGVja2luZyBhbnkgZWxlbWVudCB3aGljaAoJLy8gaXMgbm90IGVxdWFsIHRvIGkrMQoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlpZiAoYXJyW2ldICE9IGkgKyAxKSB7CgkJCXJldHVybiBpICsgMTsKCQl9Cgl9CgoJLy8gTm90aGluZyBpcyBwcmVzZW50IHJldHVybiBsYXN0IGluZGV4CglyZXR1cm4gbiArIDE7Cn0KCi8vIERyaXZlciBjb2RlCmludCBtYWluKCkKewoJaW50IGFycltdID0geyAyLCAzLCAtNywgNiwgOCwgMSwgLTEwLCAxNSB9OwoJaW50IG4gPSBzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pOwoKCWludCBhbnMgPSBmaXJzdE1pc3NpbmdQb3NpdGl2ZShhcnIsIG4pOwoKCWNvdXQgPDwgYW5zOwoKCXJldHVybiAwOwp9Ci8vIFRoaXMgY29kZSBpcyBjb250cmlidXRlZCBieSBIYXJzaCBrZWRpYQo=