Cod sursa(job #2850644)

Utilizator Linca_AmaliaLinca Mihaela Amalia Linca_Amalia Data 17 februarie 2022 11:02:22
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int n, i, m, j, x, mid, st, dr, v[100005];

int main(){
    fin >> n;
    for ( int i = 1; i <= n; i++ )
        fin >> v[i];
    fin >> m;
    for ( int i = 1; i <= m; i++ ){
        fin >> j >> x;
        st = 1;
        dr = n;
        while ( st <= dr ){
            mid = ( st + dr )/2;
            if ( j == 0 ){
                if ( v[mid] <= x )
                    st = mid + 1;
                else
                    dr = mid - 1;
            }
            if ( j == 1 ){
                if ( v[mid] <= x )
                    st = mid + 1;
                else
                    dr = mid - 1;
            }
            if ( j == 2 ){
                if ( v[mid] >= x )
                    dr = mid - 1;
                else
                    st = mid + 1;
            }
        }
        if ( j == 0 ){
            if ( v[dr] == x )
                fout << dr << "\n";
            else
                fout << "-1" << "\n";
        }
        if ( j == 1 ){
            fout << dr << "\n";
        }
        if ( j == 2 ){
            fout << st << "\n";
        }
    }
    return 0;
}