Cod sursa(job #2529788)

Utilizator BereaBerendea Andrei Berea Data 23 ianuarie 2020 22:55:48
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.61 kb
#include <iostream>
#include <vector>

using namespace std;
int n,i,m,a,b,x,dr,st,med,poz;
vector<int>v;

int main()
{
    cin>>n;
    for (i=0;i<n;i++)
    {
        cin>>x;
        v.push_back(x);
    }
    cin>>m;
    for (i=0;i<m;i++)
    {
        cin>>a>>b;
        if (a==0)
        {
            dr=v.size()-1;
            st=0;
            while (dr>=st)
            {
                med=(dr+st)/2;
                if (b>v[med]) st=med+1;
                if (b<v[med]) dr=med-1;
                if (b==v[med])
                {
                    poz=med;
                    st=med+1;
                }
            }
            if (v[poz]!=b) cout<<-1;
            else cout<<poz+1;
        }
        if (a==1)
        {
            dr=v.size()-1;
            st=0;
            while (dr>=st)
            {
                med=(dr+st)/2;
                if (b<v[med])
                {
                    dr=med-1;
                }
                if (b>=v[med])
                {
                    poz=med;
                    st=med+1;
                }
            }
            cout<<poz+1;
        }
        if (a==2)
        {
            dr=v.size()-1;
            st=0;
            while (dr>=st)
            {
                med=(dr+st)/2;
                if (b<=v[med])
                {
                    poz=med;
                    dr=med-1;
                }
                if (b>v[med])
                {
                    st=med+1;
                }
            }
            cout<<poz+1;
        }
        cout<<endl;
    }
}