Find NGE in a sorted array. #BS
#include <bits/stdc++.h>
using namespace std;
int ngeSort(vector<int> v, int x){
int l = 0;
int h = v.size()-1;
while(l <= h){
int m = (l+h)/2;
if(v[m] < x) l = m+1;
else if(v[m] > x) h = m-1;
else{
if(m+1 < v.size()) return v[m+1];
else return -1;
}
// s ... x x+1 ... e
}
return -1;
}
int main(){
vector<int> t = {1,2,3,4,5,6,7,8,9};
cout << BS(t, 5) << endl;
cout << BS(t, 1) << endl;
cout << BS(t, 8) << endl;
}
Comments
Post a Comment