Cod sursa(job #2415894)

Utilizator andreisontea01Andrei Sontea andreisontea01 Data 26 aprilie 2019 16:41:09
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

int v[100005];

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    int n, m, op, x;
    fin >> n;
    for(int i = 1; i <= n; ++i)
        fin >> v[i];
    fin >> m;
    while(m){
        fin >> op >> x;
        int rez = 0, pas = 1 << 30;
        while(pas){
            if(rez + pas <= n && ((op < 2 && v[rez + pas] <= x) || (op == 2 && v[rez + pas] < x)))
                rez += pas;
            pas /= 2;
        }
        if(op == 0){
            if(v[rez] == x) fout << rez << "\n";
            else fout << "-1\n";
        }
        else{
            if(op == 2) rez++;
            fout << rez << "\n";
        }
        m--;
    }
    return 0;
}