Cod sursa(job #2782814)

Utilizator Vlad_StancuStancu Vlad Gabriel Vlad_Stancu Data 13 octombrie 2021 09:51:46
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <fstream>

using namespace std;
long long v[100001], n, k, p1, p2;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int CautareBinara0(int x) {
    int poz=-1;
    int st=1;
    int dr=n;
    while (st<=dr) {
        int mij=(st+dr)/2;
        if (v[mij]<=x) {
            poz=mij;
            st=mij+1;
        }
        else dr=mij-1;
    }
    return poz;
}
int CautareBinara1 (int x) {
    int poz=-1;
    int st=1;
    int dr=n;
    while (st<=dr) {
        int mij=(st+dr)/2;
        if (v[mij]<=x) {
            poz=mij;
            st=mij+1;
        }
        else dr=mij-1;
    }
    return poz;
}
int CautareBinara2 (int x) {
    int poz=-1;
    int st=1;
    int dr=n;
    while (st<=dr) {
        int mij=(st+dr)/2;
        if (v[mij]>=x) {
            poz=mij;
            dr=mij-1;
        }
        else st=mij+1;
    }
    return poz;
}
int main()
{
    fin>>n;
    for (int i=1; i<=n; i++) fin>>v[i];
    fin>>k;
    while (k) {
        fin>>p1>>p2;
        if (p1==0) fout<<CautareBinara0(p2)<<'\n';
        else if (p1==1) fout<<CautareBinara1(p2)<<'\n';
        else if (p1==2) fout<<CautareBinara2(p2)<<'\n';
    }
    return 0;
}