#include <bits/stdc++.h>
using namespace std;
int countBinarySearchableIndex(int Arr[], int l, int r,
int LR, int RL)
{
if(l > r)
return 0;
int ans = 0;
int mid = (l + r) /2 ;
if(Arr[mid] > LR && Arr[mid] < RL)
ans = 1;
int left = countBinarySearchableIndex(Arr, 0, mid-1, LR, min(RL, Arr[mid]));
int ri = countBinarySearchableIndex(Arr, mid+1, r, max(LR,Arr[mid]), RL);
return ans + left + ri;
}
int main()
{
int Arr[] = { 10, 1, 2, 3, 4, 8, 6, 5,
7, 12, 9, 8, 13, 15, 11 };
int n = 15;
cout << "Number of Binary Searchable Indexes: ";
cout << countBinarySearchableIndex(Arr, 0, n - 1, -1e9,
1e9)
<< endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCgppbnQgY291bnRCaW5hcnlTZWFyY2hhYmxlSW5kZXgoaW50IEFycltdLCBpbnQgbCwgaW50IHIsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IExSLCBpbnQgUkwpCnsKCiAgICBpZihsID4gcikgCiAgICByZXR1cm4gMDsKICAgIAogICAgaW50IGFucyA9IDA7IAogICAgCiAgICBpbnQgbWlkID0gKGwgKyByKSAvMiA7IAogICAgCiAgICBpZihBcnJbbWlkXSA+IExSICYmIEFyclttaWRdIDwgUkwpCiAgICBhbnMgPSAxOyAKICAgIAogICAgCiAgICBpbnQgbGVmdCA9IGNvdW50QmluYXJ5U2VhcmNoYWJsZUluZGV4KEFyciwgMCwgbWlkLTEsIExSLCBtaW4oUkwsIEFyclttaWRdKSk7CiAgICBpbnQgcmkgPSBjb3VudEJpbmFyeVNlYXJjaGFibGVJbmRleChBcnIsIG1pZCsxLCByLCAgbWF4KExSLEFyclttaWRdKSwgIFJMKTsKICAgIAogICAgcmV0dXJuIGFucyArIGxlZnQgKyByaTsKfQogICAgCiAgICAKIAoKaW50IG1haW4oKQp7CgogICAgaW50IEFycltdID0geyAxMCwgMSwgIDIsIDMsIDQsICA4LCAgNiwgNSwKCiAgICAgICAgICAgICAgICAgIDcsICAxMiwgOSwgOCwgMTMsIDE1LCAxMSB9OwoKICAgIGludCBuID0gMTU7CgogICAgY291dCA8PCAiTnVtYmVyIG9mIEJpbmFyeSBTZWFyY2hhYmxlIEluZGV4ZXM6ICI7CgogICAgY291dCA8PCBjb3VudEJpbmFyeVNlYXJjaGFibGVJbmRleChBcnIsIDAsIG4gLSAxLCAtMWU5LAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMWU5KQoKICAgICAgICAgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==