Cod sursa(job #2475502)

Utilizator E1goBack Andrei-Gheorghe E1go Data 16 octombrie 2019 23:31:13
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.57 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

vector <int> v;

int main()
{
    int n, m, a, b, x;
    fin>>n;
    while(n)
    {
        fin>>m;
        v.push_back(m);
        n--;
    }
    fin>>m;
    while(m)
    {
        int st=0, dr=v.size(), mij, ok=0;
        fin>>a>>b;
        while(st <= dr && !ok)
        {
            mij=(st+dr)/2;
            if(v[mij] == b)
             ok=1;
            else
             if(b > v[mij])
                 st=mij;
             else
                 dr=mij;
        }
        if(a == 0)
        {
            if(ok == 1)
             {
                 while(v[mij+1] == b)
                    mij++;
                 fout<<mij+1;
             }
            else
              fout<<-1;
        }
        else
        if(a==1)
        {
            if(v[mij] > b)
            {
                while(v[mij] > b)
                    mij--;
                fout<<mij+1;
            }
            else
            {
                while(v[mij+1] <= b)
                  mij++;
                fout<<mij+1;
            }
        }
        else
        if(a==2)
        {
            if(v[mij] < b)
            {
                while(v[mij]< b)
                    mij++;
                fout<<mij+1;
            }
            else
            {
                while(v[mij-1] >= b)
                    mij--;
                fout<<mij+1;
            }
        }
        fout<<"\n";
        m--;
    }
    return 0;
}