#include <iostream>
#include <vector>
#include <algorithm> // For sort
using namespace std;
int binarySearch( vector< int > & arr, int target) {
int low = 0 ;
int high = arr.size ( ) - 1 ;
while ( low <= high) {
int mid = low + ( high - low) / 2 ;
// Print current low, mid, high
cout << "Low: " << low << ", Mid: " << mid << ", High: " << high << endl;
if ( arr[ mid] == target) {
return mid;
}
else if ( arr[ mid] < target) {
low = mid + 1 ;
}
else {
high = mid - 1 ;
}
}
return - 1 ; // Not found
}
int main( ) {
int n, target;
cout << "Enter the number of elements in the array: " ;
cin >> n;
vector< int > arr( n) ;
cout << "Enter " << n << " integers (sorted or unsorted): " ;
for ( int i = 0 ; i < n; ++ i) {
cin >> arr[ i] ;
}
// Optional: sort the array if not sorted
sort( arr.begin ( ) , arr.end ( ) ) ;
cout << "Enter the target value to search: " ;
cin >> target;
int result = binarySearch( arr, target) ;
if ( result ! = - 1 ) {
cout << "Element found at index (in sorted array): " << result << endl;
}
else {
cout << "Element not found in the array." << endl;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPiAvLyBGb3Igc29ydAp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGJpbmFyeVNlYXJjaCh2ZWN0b3I8aW50PiAmYXJyLCBpbnQgdGFyZ2V0KSB7CiAgICBpbnQgbG93ID0gMDsKICAgIGludCBoaWdoID0gYXJyLnNpemUoKSAtIDE7CgogICAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7CiAgICAgICAgaW50IG1pZCA9IGxvdyArIChoaWdoIC0gbG93KSAvIDI7CgogICAgICAgIC8vIFByaW50IGN1cnJlbnQgbG93LCBtaWQsIGhpZ2gKICAgICAgICBjb3V0IDw8ICJMb3c6ICIgPDwgbG93IDw8ICIsIE1pZDogIiA8PCBtaWQgPDwgIiwgSGlnaDogIiA8PCBoaWdoIDw8IGVuZGw7CgogICAgICAgIGlmIChhcnJbbWlkXSA9PSB0YXJnZXQpIHsKICAgICAgICAgICAgcmV0dXJuIG1pZDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoYXJyW21pZF0gPCB0YXJnZXQpIHsKICAgICAgICAgICAgbG93ID0gbWlkICsgMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gLTE7IC8vIE5vdCBmb3VuZAp9CgppbnQgbWFpbigpIHsKICAgIGludCBuLCB0YXJnZXQ7CiAgICBjb3V0IDw8ICJFbnRlciB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheTogIjsKICAgIGNpbiA+PiBuOwoKICAgIHZlY3RvcjxpbnQ+IGFycihuKTsKICAgIGNvdXQgPDwgIkVudGVyICIgPDwgbiA8PCAiIGludGVnZXJzIChzb3J0ZWQgb3IgdW5zb3J0ZWQpOiAiOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBjaW4gPj4gYXJyW2ldOwogICAgfQoKICAgIC8vIE9wdGlvbmFsOiBzb3J0IHRoZSBhcnJheSBpZiBub3Qgc29ydGVkCiAgICBzb3J0KGFyci5iZWdpbigpLCBhcnIuZW5kKCkpOwoKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB0YXJnZXQgdmFsdWUgdG8gc2VhcmNoOiAiOwogICAgY2luID4+IHRhcmdldDsKCiAgICBpbnQgcmVzdWx0ID0gYmluYXJ5U2VhcmNoKGFyciwgdGFyZ2V0KTsKCiAgICBpZiAocmVzdWx0ICE9IC0xKSB7CiAgICAgICAgY291dCA8PCAiRWxlbWVudCBmb3VuZCBhdCBpbmRleCAoaW4gc29ydGVkIGFycmF5KTogIiA8PCByZXN1bHQgPDwgZW5kbDsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGNvdXQgPDwgIkVsZW1lbnQgbm90IGZvdW5kIGluIHRoZSBhcnJheS4iIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K
stdout
Enter the number of elements in the array: Enter 45 integers (sorted or unsorted): Enter the target value to search: Low: 0, Mid: 22, High: 44
Low: 23, Mid: 33, High: 44
Low: 34, Mid: 39, High: 44
Low: 40, Mid: 42, High: 44
Low: 43, Mid: 43, High: 44
Low: 44, Mid: 44, High: 44
Element not found in the array.