Cod sursa(job #2325060)

Utilizator pishcotMiruna Turbatu pishcot Data 21 ianuarie 2019 21:56:08
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.67 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n , a[100005];
void CitiRez()
{
    int x , st , dr , mij , poz = 0 , m ,op ,i;
    fin >> n;
    for(i = 1; i <= n; i++)
        fin >> a[i];

    fin >> m;
    for(int i = 1; i <= m; i++)
    {
        fin >> op;
        fin >> x;
        if(op == 0)
        {
            st = 1;
            dr = n;
            poz = 0;
            while(st <= dr)
            {
                mij = (st + dr) / 2;
                if(a[mij] == x)
                {
                    poz = mij;
                    st = mij + 1;
                }
                else dr = mij - 1;
            }
            if(poz != 0)
                fout << poz << "\n";
            else fout << "-1\n";
        }
        else if(op == 1)
        {
           st = 1;
           dr = n;
           poz = 0;
           while(st <= dr)
           {
               mij = (st + dr) / 2;
               if(a[mij] <= x)
               {
                   poz = mij;
                   st = mij + 1;
               }
               else dr = mij - 1;
           }
           fout << poz << "\n";
        }
        else
        {
            st = 1;
            dr = n;
            poz = 0;
            while(st <= dr)
            {
                mij = (st + dr) / 2;
                if(a[mij] >= x)
                {
                    poz = mij;
                    dr = mij - 1;
                }
                else st = mij + 1;
            }
            fout << poz << "\n";
        }
    }

}
int main()
{
    CitiRez();
    return 0;
}