Cod sursa(job #2530959)

Utilizator BereaBerendea Andrei Berea Data 25 ianuarie 2020 15:19:30
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.69 kb
#include <iostream>
#include <vector>
#include <fstream>

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

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin>>n;
    for (i=0;i<n;i++)
    {
        fin>>x;
        v.push_back(x);
    }
    fin>>m;
    for (i=0;i<m;i++)
    {
        fin>>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) fout<<-1;
            else fout<<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;
                }
            }
            fout<<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;
                }
            }
            fout<<poz+1;
        }
        fout<<"\n";
    }
}