Cod sursa(job #2782806)

Utilizator D4R1U5Sava Darius D4R1U5 Data 13 octombrie 2021 09:42:27
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");

long long a[100005],n,k,nr1,nr2;

int CautareBinara0(long x){
    int st=1, dr=n, poz=-1;
    while (st<=dr){
        int mij=(st+dr)/2;
        if (x<a[mij]) dr=mij-1;
        else{
            if (x==a[mij]) poz=mij;
            st=mij+1;
        }
    }
    return poz;
}

int CautareBinara1(long x){
    int st=1, dr=n, poz=0;
    while (st<=dr){
        int mij=(st+dr)/2;
        if (a[mij]<=x){poz=mij;
                       st=mij+1;}
        else dr=mij-1;
    }
    return poz;
}

int CautareBinara2(long x){
    int st=1, dr=n, poz=0;
    while (st<=dr){
        int mij=(st+dr)/2;
        if (a[mij]>=x){poz=mij;
                       dr=mij-1;}
        else st=mij+1;
    }
    return poz;
}

int main()
{
    f>>n;
    for (int i=1;i<=n;i++)
        f>>a[i];
    f>>k;
    while (k){
        f>>nr1>>nr2;
        if (nr1==0) g<<CautareBinara0(nr2)<<'\n';
        else if (nr1==1) g<<CautareBinara1(nr2)<<'\n';
             else g<<CautareBinara2(nr2)<<'\n';
        k--;
    }
    return 0;
}