Cod sursa(job #3120934)

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

using namespace std;

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

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

int b_search (int target, int query)
{

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

    while (p)
    {

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


        p >>= 1 ;

    }

    if (v[index] == target)
    {

        if (query == 2)
            {

                while (v[index] == v[index - 1])
                    index -- ;

                return index ;

            }

        else
            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 ;

}