Cod sursa(job #1772447)

Utilizator doriiiiiii7Tirsogoiu Dorina doriiiiiii7 Data 6 octombrie 2016 19:12:10
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int nr,k,x,i,n,v[100005];
int caut0(){
    int st=1,dr=n,mij,p=-1;
    while(st<=dr){
        mij=(st+dr)/2;
        if(v[mij]==x){
            p=mij;
            st=mij+1;
        }
        else
        {
            if(v[mij]>x)
                dr=mij-1;
            else
                st=mij+1;
        }
    }
    return p;

}
int caut1()
{
    int st=1,dr=n,mij,p=0;
    while(st<=dr){
        mij=(st+dr)/2;
        if(v[mij]<=x){
            p=mij;
            st=mij+1;
        }
        else
            if(v[mij]>x)
                dr=mij-1;
    }
            return p;
}
int caut2()
{
    int st=1,dr=n,mij,p;
    while(st<=dr){
        mij=(st+dr)/2;
        if(v[mij]>=x){
            p=mij;
            dr=dr-1;
        }
        else
        {
            if(v[mij]<x){
                st=mij+1;
            }
        }
    }
    return p;
}
int main()
{
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>v[i];
    }
    fin>>k;
    for(i=1;i<=k;i++){
        fin>>nr>>x;
        if(nr==0)
            fout<<caut0();
        if(nr==1)
            fout<<caut1();
        if(nr==2)
            fout<<caut2();
        fout<<"\n";
    }
    return 0;
}