Napisałem program, który znajduje LOWER_BOUND ale nie wiem jaki postawić warunek, żeby wyszukiwało UPPER_BOUND.
Mój kod:
#include <iostream>
using namespace std;
int tab[100009];
int lower_bon(int p, int k, int sz)
{
int s;
if(p<k){
s=(p+k)/2;
if(sz<=tab[s])return lower_bon(p,s,sz);
else return lower_bon(s+1,k,sz);
}
return p;
}
int main ()
{
int n;
cin>>n;
for(int i=0;i<n;i++)cin>>tab[i];
int sz;
int k,poz;
cin>>k;
for( int i=0;i<k;i++){
cin>>sz;
poz=lower_bon(0,n-1,sz)+1;
if(sz>tab[n-1])cout<<"b ";
else cout<<poz<<" " ;
}
// cout<<lower_bon(0,n-1,sz);
return 0;
}