Cod sursa(job #2782801)

Utilizator D4R1U5Sava Darius D4R1U5 Data 13 octombrie 2021 09:37:40
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>

using namespace std;

int a[1005],n,k,nr1,nr2;

int CautareBinara0(int x){
    int st=1, dr=n, poz=-1;
    while (st<=dr){
        int mij=(st+dr)/2;
        if (x<a[mij]) dr=mij-1;
        else{
            if (x==a[mij]) poz=mij;
            st=mij+1;
        }
    }
    return poz;
}

int CautareBinara1(int x){
    int st=1, dr=n, poz=0;
    while (st<=dr){
        int mij=(st+dr)/2;
        if (a[mij]<=x){poz=mij;
                       st=mij+1;}
        else dr=mij-1;
    }
    return poz;
}

int CautareBinara2(int x){
    int st=1, dr=n, poz=0;
    while (st<=dr){
        int mij=(st+dr)/2;
        if (a[mij]>=x){poz=mij;
                       dr=mij-1;}
        else st=mij+1;
    }
    return poz;
}

int main()
{
    cin>>n;
    for (int i=1;i<=n;i++)
        cin>>a[i];
    cin>>k;
    while (k){
        cin>>nr1>>nr2;
        if (nr1==0) cout<<CautareBinara0(nr2);
        else if (nr1==1) cout<<CautareBinara1(nr2);
             else cout<<CautareBinara2(nr2);
        k--;
    }
    return 0;
}