Cod sursa(job #3366394)

Utilizator seful_stefanstefan andrei seful_stefan Data 1 octombrie 2026 12:11:08
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.45 kb
#include <bits/stdc++.h>
using namespace std;
int c0(const vector<int>& v, int n, int x) {
    int st = 0, dr = n - 1, ans = -1;

    while (st <= dr) {
        int mij = (st+dr)/2;
        if (v[mij] == x) {
            ans = mij+1;
            st = mij + 1;
        } else if (v[mij] < x) {
            st = mij + 1;
        } else {
            dr = mij - 1;
        }
    }
    return ans;
}
int c1(const vector<int>& v, int n, int x) {
    int st = 0, dr = n - 1, ans = -1;

    while (st <= dr) {
        int mij = (st+dr)/2;
        if (v[mij] <= x) {
            ans = mij+1;
            st = mij + 1;
        } else {
            dr = mij - 1;
        }
    }
    return ans;
}
int c2(const vector<int>& v, int n, int x) {
    int st = 0, dr = n - 1, ans = -1;

    while (st <= dr) {
        int mij = (st+dr)/2;
        if (v[mij] >= x) {
            ans = mij+1;
            dr = mij-1;
        } else {
            st = mij+1;
        }
    }
    return ans;
}
int main(){
    ifstream cin("cautbin.in");
    ofstream cout("cautbin.out");
    int n;
    cin>>n;
    vector<int> v(n);
    for(int i = 0; i<n; i++){
        cin>>v[i];
    }
    int q;
    cin>>q;
    while(q--){
        int c, nr;
        cin>>c>>nr;
        if(c==0){
            cout<<c0(v, n, nr)<<"\n";
        }else if(c==1){
            cout<<c1(v, n, nr)<<"\n";
        }else{
            cout<<c2(v, n, nr)<<"\n";
        }
    }
}