Cod sursa(job #3360461)

Utilizator Edward_16Doaga Eduard Andrei Edward_16 Data 14 iulie 2026 11:48:52
Problema Cautare binara Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.53 kb
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int sir[100002];
int main() {
    int n, m;
    cin>>n;
    for (int i = 1; i <= n; i++) {
        cin>>sir[i];
    }
    cin>>m;
    int c, x;
    for (int i = 1; i <= m; i++) {
        cin>>c>>x;
        if (c==0) {
            long long st=1, dr=n+1;
            while (st+1<dr) {
                long long mij=(dr-st)/2+st;
                if (sir[mij]<x) {
                    st=mij;
                } else if (sir[mij]>x) {
                    dr=mij;
                } else {
                    st=mij;
                }
            }
            if (sir[st]==x) {
                cout<<st<<'\n';
            } else {
                cout<<-1<<'\n';
            }
        } else if (c==1) {
            long long st=1, dr=n+1;
            while (st+1<dr) {
                long long mij=(dr-st)/2+st;
                if (sir[mij]<x) {
                    st=mij;
                } else if (sir[mij]>x) {
                    dr=mij;
                } else {
                    st=mij;
                }
            }
            cout<<st<<'\n';
        } else if (c==2) {
            long long st=1, dr=n+1;
            while (st+1<dr) {
                long long mij=(dr-st)/2+st;
                if (sir[mij]<x) {
                    st=mij;
                } else if (sir[mij]>x) {
                    dr=mij;
                } else {
                    dr=mij;
                }
            }
            cout<<dr<<'\n';
        }
    }
    return 0;
}