Cod sursa(job #3204647)

Utilizator User2Matei Stratulat User2 Data 17 februarie 2024 11:12:24
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.55 kb
#include <bits/stdc++.h>

using namespace std;

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

long long int n, m, x, v[1000001], y[1000001], st, dr, mi, c, r;

int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++){
        fin >> v[i];
    }
    sort(v + 1, v + n);
    fin >> m;
    for(int i = 1; i <= m; i++){
        fin >> c;
        fin >> x;
        st = 1;
        dr = n;
        if(c == 0){
            while(dr >= st){
                mi = (st + dr) / 2;
                if(v[mi] == x){
                    r = mi;
                    st = mi + 1;
                }else if(x > v[mi]){
                    st = mi + 1;
                }else{
                    dr = mi - 1;
                }
            }
            fout << r << '\n';
        }else if(c == 1){
            while(dr >= st){
                mi = (st + dr) / 2;
                if(v[mi] <= x){
                    r = mi;
                    st = mi + 1;
                }else if(x > v[mi]){
                    st = mi + 1;
                }else{
                    dr = mi - 1;
                }
            }
            fout << r << '\n';
        }else{
            while(dr >= st){
                mi = (st + dr) / 2;
                if(v[mi] >= x){
                    r = mi;
                    dr = mi - 1;
                }else if(x > v[mi]){
                    st = mi + 1;
                }else{
                    dr = mi - 1;
                }
            }
            fout << r;
        }
    }
    return 0;
}