Cod sursa(job #3250605)

Utilizator Federica361Martinut Federica Federica361 Data 22 octombrie 2024 12:45:59
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,v[100002];
int Cb1(int val){
int st,dr,mij;
st=1;
dr=n;
int rez=-1;
while(st<=dr){
    mij=(st+dr)/2;
    if(v[mij]==val){
       rez=mij;
       st=mij+1;
    }
    else
        if(val<v[mij])
            dr=mij-1;
         else
            st=mij+1;
}
return rez;
}



int Cb2(int val){
int st,dr,mij,rez;
st=1;
dr=n;
rez=-1;
while(st<=dr){
    mij=(st+dr)/2;
    if(v[mij]<=val){
        rez=mij;
        st=mij+1;
    }
    else
        dr=mij-1;
}
return rez;
}

int Cb3(int val){
int st,dr,mij,rez=-1;
st=1;
dr=n;
while(st<=dr){
    mij=(st+dr)/2;
    if(v[mij]<val)
        st=mij+1;

    else{
        dr=mij-1;
        rez=mij;
    }
}
return rez;
}
int main(){
int i,tip,val,q;
fin>>n;
for(i=1;i<=n;i++)
    fin>>v[i];
    fin>>q;
//sort(v+1,v+n+1);
for(i=1;i<=q;i++){
    fin>>tip>>val;
    if(tip==0)
        fout<<Cb1(val)<<'\n';
        if(tip==1)
            fout<<Cb2(val)<<'\n';
        if(tip==2)
            fout<<Cb3(val)<<'\n';
}
}