Cod sursa(job #3227954)

Utilizator herbertoHerbert Mohanu herberto Data 4 mai 2024 12:45:12
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
using namespace std;

ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100001], n;
int element1(int el){
    int st, dr, mid, sol;
    st=1;
    dr=n;
    sol=-1;
    while(st<=dr){
        mid=(st+dr)/2;
        if(v[mid]<=el){
            st=mid+1;
            sol=mid;
        }
        else
            dr=mid-1;
    }
    return sol;
}
int element0(int el){
    int x=element1(el);
    if(x!=-1 && v[x]==el)
        return x;
    else
        return -1;
}
int element2(int el){
    int st, dr, mid, sol;
    st=1;
    dr=n;
    sol=-1;
    while(st<=dr){
        mid=(st+dr)/2;
        if(v[mid]<el){
            st=mid+1;
        }
        else{
            dr=mid-1;
            sol=mid;
        }
    }
    return sol;
}
int main()
{
    int i, m, a, b;
    cin>>n;
    for(i=1; i<=n; i++)
        cin>>v[i];
    cin>>m;
    for(i=1; i<=m; i++){
        cin>>a>>b;
        if(a==0)
            cout<<element0(b)<<endl;
        if(a==1)
            cout<<element1(b)<<endl;
        if(a==2)
            cout<<element2(b)<<endl;
    }
    return 0;
}