Cod sursa(job #2786541)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 21 octombrie 2021 10:01:32
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;

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

int v[100005];
int n, tip, x;
int p, st, dr;

int main (){
    fin>>n;
    for(int i=1; i<=n; i++)
        fin>>v[i];
    int query; fin>>query;
    while(query--){
        fin>>tip>>x;

        if(tip == 0 || tip == 1){

            st=0, dr=(1 << 17);
            while(dr){

                if((st|dr) <= n)
                    if(v[(st|dr)] <= x)
                        st |= dr;

                dr >>= 1;
            }

            if(tip == 0){
                if(v[st] == x)
                    fout<<st<<"\n";
                else
                    fout<<"-1\n";
            }else
                fout<<st<<"\n";
        }else{
            st=0, dr=(1<<17);
            while(dr){

                if((st|dr) <= n)
                    if(v[(st|dr)] < x)
                        st |= dr;

                dr >>= 1;
            }
            fout<<st+1<<"\n";
        }
    }

    return 0;
}