Cod sursa(job #3322729)

Utilizator Seba1030Banescu Stefan Sebastian Seba1030 Data 15 noiembrie 2025 13:54:37
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.55 kb
#include <bits/stdc++.h>

const int MAXN = 100000;

using namespace std;

int v[MAXN + 5];

int main() {
    ifstream cin( "cautbin.in" );
    ofstream cout( "cautbin.out" );
    int n, m;
    cin >> n;
    for ( int i = 0; i < n; i++ ) {
        cin >> v[i];
    }
    cin >> m;
    for ( int i = 0; i < m; i++ ) {
        int op, x, ans = -1;
        cin >> op >> x;
        int st = 0, dr = n - 1;
        if ( op == 0 ) {
            while ( st <= dr ) {
                int mij = ( st + dr ) / 2;
                if ( v[mij] == x ) {
                    ans = mij;
                    st = mij + 1;
                }
                else if ( v[mij] < x ) {
                    st = mij + 1;
                }
                else {
                    dr = mij - 1;
                }
            }
        }
        else if ( op == 1 ) {
            while ( st <= dr ) {
                int mij = ( st + dr ) / 2;
                if ( v[mij] <= x ) {
                    ans = mij;
                    st = mij + 1;
                }
                else {
                    dr = mij - 1;
                }
            }
        }
        else {
            if ( op == 2 ) {
                while ( st <= dr ) {
                    int mij = ( st + dr ) / 2;
                    if ( v[mij] < x ) {
                        st = mij + 1;
                    }
                    else {
                        ans = mij;
                        dr = mij - 1;
                    }
                }
            }
        }
        cout << ans + 1 << '\n';
    }

    return 0;
}