Cod sursa(job #2786534)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 21 octombrie 2021 09:57:02
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>

using namespace std;

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

#define NMAX 100000

int v[NMAX];

int main() {
    int n, i, p2, q, op, x, pas, st;
    cin >> n;
    for ( i = 0; i < n; i++ ) {
        cin >> v[i];
    }
    cin >> q;
    p2 = 1;
    while ( p2 <= n ) {
        p2 = p2 << 1;
    }
    p2 = p2 >> 1;
    for ( i = 1; i <= q; i++ ) {
        cin >> op >> x;
        pas = p2;
        st = 0;
        if ( op == 0 ) {
            for (; pas; pas >>= 1) {
                if (v[st | pas] <= x) {
                    st |= pas;
                }
            }
            if ( v[st] == x )
                cout << st << "\n";
            else
                cout << "-1\n";
        }
        else if ( op == 1 ) {
            for (; pas; pas >>= 1) {
                if (v[st | pas] <= x) {
                    st |= pas;
                }
            }
            cout << st << "\n";
        }
        else {
            for (; pas; pas >>= 1) {
                if (v[st | pas] > x) {
                    st |= pas;
                }
            }
            cout << st << "\n";
        }
    }
    return 0;
}