Cod sursa(job #3352911)

Utilizator RaresPanuPanu Rares RaresPanu Data 2 mai 2026 14:29:32
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>
#define int long long

using namespace std;

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

int v[100001];

void solve0(int x,int n) {
    int st=1,dr=n,rez=0;
    while (st<=dr) {
        int mij=(st+dr)/2;
        if (v[mij]<=x) {
            rez=mij;
            st=mij+1;
        }else {
            dr=mij-1;
        }
    }
    if (v[rez]==x) {
        fout<<rez<<"\n";
    }else {
        fout<<"-1\n";
    }
}

void solve1(int x,int n) {
    int st=1,dr=n,rez=0;
    while (st<=dr) {
        int mij=(st+dr)/2;
        if (v[mij]<=x) {
            rez=mij;
            st=mij+1;
        }else {
            dr=mij-1;
        }
    }
    fout<<rez<<"\n";
}
void solve2(int x,int n) {
    int st=1,dr=n,rez=0;
    while (st<=dr) {
        int mij=(st+dr)/2;
        if (v[mij]>=x) {
            rez=mij;
            dr=mij-1;
        }else {
            st=mij+1;

        }
    }
    fout<<rez<<"\n";
}

signed main() {
    int n;
    fin>>n;
    for (int i=1;i<=n;i++) {
        fin>>v[i];
    }
    int q;
    fin>>q;
    for (int i=1;i<=q;i++) {
        int cer,x;
        fin>>cer>>x;
        if (cer==0) {
            solve0(x,n);
        }else if (cer==1) {
            solve1(x,n);
        }else if (cer==2) {
            solve2(x,n);
        }
    }
    return 0;
}