Cod sursa(job #3120933)

Utilizator LORDENVraja Luca LORDEN Data 9 aprilie 2023 15:42:06
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <queue>

using namespace std;

ifstream cin ("sisi.in") ;
ofstream cout ("sisi.out") ;

int t, n, v[100002], m ;

int b_search (int target, int query)
{

    int p = (1 << n), index = 0 ;

    while (p)
    {

        if (query < 2)
        {
            if (index + p <= n && v[index + p] <= target)
                index += p ;
        }

        else
        {
            if (index + p <= n && v[index + p] <= target)
                index += p ;
        }


        p >>= 1 ;

    }

    if (v[index] == target)
        return index ;

    return -1 ;

}

int main()
{

    int q, target ;

    cin >> n ;

    for (int i = 1 ; i <= n ; i ++)
        cin >> v[i] ;

    cin >> m ;

    for (int i = 1 ; i <= m ; i ++)
    {

        cin >> q >> target ;

        cout << b_search(target, q) << '\n' ;

    }


    return 0 ;

}