Cod sursa(job #3152110)

Utilizator andiRTanasescu Andrei-Rares andiR Data 23 septembrie 2023 21:43:31
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.56 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <unordered_map>
#include <set>
#include <queue>
#include <stack>
#include <deque>
#include <iomanip>
#include <vector>
#include <bitset>

#pragma GCC optimize("O3")
#define fi first
#define se second
#define pb push_back
#define pf push_front

using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
typedef long long ll;
const ll Nmax=1e5+5, inf=1e9+5;
using pii=pair<int, int>;

int n, v[Nmax];
int main()
{
    fin>>n;
    for (int i=0; i<n; i++)
        fin>>v[i];
    char ch; int nr;
    int k;
    fin>>k;
    for (int i=0; i<k; i++){
        fin>>ch>>nr;
        int l=0, r=n-1, mij, sol=0;
        if (ch=='0'){
            while (l<=r){
                mij=(l+r)/2;
                if (v[mij]<=nr){
                    sol=mij;
                    l=mij+1;
                }
                else r=mij-1;
            }
            if (v[sol]!=nr)
                sol=-2;
        }
        else if(ch=='1'){
            while (l<=r){
                mij=(l+r)/2;
                if (v[mij]<=nr){
                    sol=mij;
                    l=mij+1;
                }
                else r=mij-1;
            }
        }
        else{
            while (l<=r){
                mij=(l+r)/2;
                if (v[mij]>=nr){
                    sol=mij;
                    r=mij-1;
                }
                else l=mij+1;
            }
        }
        fout<<sol+1<<'\n';
    }
    return 0;
}