Cod sursa(job #1999786)

Utilizator vasilescutiberiu121Vasilescu Costin-Tiberiu vasilescutiberiu121 Data 12 iulie 2017 09:47:09
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int main()
{
    int n,v[100000],m,i,x,op,mid,li,ls;
    fin >> n;

    for(i=0; i<n; i++)fin>>v[i];
    fin >> m;
    for(i=0; i<m; i++)
    {
        fin >> op >> x;
        if(op==0)
        {
            li = 0;
            ls = n - 1;
            while(li<ls)
            {
                mid = (li+ls+1)/2;
                if(v[mid] <= x)li = mid;
                else ls = mid - 1;
            }
            if(v[li] == x)fout << li + 1 <<"\n";
            else fout << "-1\n";
        }
        else if(op==1)
        {
            li = 0;
            ls = n-1;
            while(li<ls)
            {
                mid = (li+ls+1)/2;
                if(v[mid] <= x)li = mid;
                else ls = mid - 1;
            }
            fout << li + 1 <<"\n";
        }
        else
        {
            li = 0;
            ls = n-1;
            while(li<ls)
            {
                mid = (li+ls)/2;
                if(v[mid] < x)li = mid + 1;
                else ls = mid;
            }
            fout << li + 1;
        }
    }
    return 0;
}