#include <iostream>
using namespace std;
int smallest(int a[],int l,int r)
{
if(l>r)
return r+1;
if(l!=a[l])
return l;
int mid=l+(r-l)/2;
if(a[mid]<mid)
return smallest(a,l,mid);
else
return smallest(a,mid+1,r);
}
int main() {
// your code goes here
int a[]={0,1,2,3,4};
cout<<smallest(a,0,4);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IHNtYWxsZXN0KGludCBhW10saW50IGwsaW50IHIpCnsKCWlmKGw+cikKCQlyZXR1cm4gcisxOwoJaWYobCE9YVtsXSkKCQlyZXR1cm4gbDsKCQkKCWludCBtaWQ9bCsoci1sKS8yOwoJCglpZihhW21pZF08bWlkKQoJCXJldHVybiBzbWFsbGVzdChhLGwsbWlkKTsKCWVsc2UKCQlyZXR1cm4gc21hbGxlc3QoYSxtaWQrMSxyKTsKfQoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglpbnQgYVtdPXswLDEsMiwzLDR9OwoJY291dDw8c21hbGxlc3QoYSwwLDQpOwoJCgkKCXJldHVybiAwOwp9