Binarne przeszukiwanie - UPPER_BOUND

0

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;
}

 
0

http://pastebin.com/Y2MBgfGN
Hm, trochę podobne, ale no nic, może akurat Twoja wrzutka (dosyć dziwne).

Anyway, Twój post jest na zasadzie zbudowałem sobie jakąś maszynę, tutaj macie zdjęcie - jak dodać do niej wylot powietrza?, czyli po prostu wrzuciłeś kod, kompletnie nie opisałeś co się tutaj dzieje, i jeszcze pewnie liczysz, że ktoś sensownie odpowie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1