Cod sursa(job #2251418)

Utilizator i.uniodCaramida Iustina-Andreea i.uniod Data 1 octombrie 2018 16:29:46
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, x, v[100002], m, q;

int rezolva0(int x)
{
    int p=1, u=n, mij, sol=0;
    while(p<=u) {
        mij=(p+u)/2;
        if(v[mij]<=x) {
            sol=mij;
            p=mij+1;
        }
        else
            u=mij-1;
    }
    return sol;
}

int rezolva2(int x)
{
    int p=1, u=n, mij, sol=0;
    while(p<=u) {
        mij=(p+u)/2;
        if(v[mij]>=x) {
            sol=mij;
            u=mij-1;
        }
        else
            p=mij+1;
    }
    return sol;
}

int main()
{
    fin>>n;
    for(int i=1; i<=n; ++i)
        fin>>v[i];
    fin>>m;
    int poz;
    for(int i=1; i<=m; ++i) {
        fin>>q>>x;
        if(q==0) {
             poz=rezolva0(x);
             if(v[poz]==x)
                fout<<poz<<'\n';
             else
                fout<<-1<<'\n';
        }
        if(q==1) {
            poz=rezolva0(x);
            fout<<poz<<'\n';
        }
        if(q==2)
            fout<<rezolva2(x);
    }
    return 0;
}