Cod sursa(job #2612397)

Utilizator ionutomutiuIonut Tomutiu ionutomutiu Data 8 mai 2020 22:18:45
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int N, A [100005], M;
int binary_search(int val)
{
    int i, step;
    for (step = 1; step < N; step <<= 1);
    for (i = 0; step; step >>= 1)
        if (i + step < N && A[i + step] <= val)
           i += step;
    return i;
}
int main ()
{
    fin >> N;
    for (int i = 1; i <= N; i++)
        fin >> A[i];
    fin >> M;
    for (int i = 1; i <= M; i++)
    {
        int p, x;
        fin >> p >> x;
        int poz = binary_search (x);
        if (p == 0)
            if (A[poz] == x)
                fout << poz << "\n";
            else
                cout << -1 << "\n";
        else if (p == 1)
            fout << poz << "\n";
        else
        {
            if (A[poz] != x)
                poz++;
            fout << poz << "\n";
        }
    }
}