Cod sursa(job #2913654)

Utilizator Tudor_EnacheEnache Tudor Tudor_Enache Data 15 iulie 2022 20:50:19
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <fstream>

using namespace std;

ifstream cin("cautbin.in");
ofstream cout ("cautbin.out");

int n,m,a[100001];

int solve(int cer,int nr){
    if (cer == 0)
    {
        int poz;
        int st= 1,dr = n, mij;
        while (st<=dr){
             mij = st + (dr-st)/2;
            if (a[mij] == nr)
            poz = mij;

            if (mij <= nr)
            st = mij +1;
            else
            dr = mij - 1;
        }
        return poz;
    }
    else if (cer == 1){
        int st = 1, dr = n,mij,poz;
        while (st <=dr){
            mij = st + (dr-st)/2;
        if (a[mij] <= nr)
        {
            st = mij +1;
            poz = mij;
        }
        else
        dr = mij -1;
        }
    return poz;
    }
    else if (cer == 2){
        int st = 1, dr = n,mij,poz;
        while (st <=dr){
            mij = st + (dr-st)/2;
        if (a[mij] >=nr)
        {
            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 >> m;
    for (int i = 1;i <=m;++i)
    {
        int x,k;
        cin >> x>>k;
        cout << solve(x,k) << endl;
    }

}