Cod sursa(job #2159451)

Utilizator Teodor01Dorde Teodor Teodor01 Data 10 martie 2018 22:31:45
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>

using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100001];
int n;
int i1(int nr,int n){
    int i=1,s=n,gasit=-1;
    while(i<=s)
    {
        int mid=(i+s)/2;
        if(v[mid]==nr)
            gasit=mid,i=mid+1;
        if(v[mid]<nr)
            i=mid+1;
        if(v[mid]>nr)
            s=mid-1;
    }
    return gasit;
    }
int i2(int nr,int n){
    int i=1,s=n,gasit=-1;
    while(i<=s)
    {
        int mid=(i+s)/2;
        if(v[mid]<=nr)
            gasit=mid,i=mid+1;
        if(v[mid]>nr)
            s=mid-1;
    }
    return gasit;
    }
int i3(int nr,int n){
    int i=1,s=n,gasit;
    while(i<=s)
    {
        int mid=(i+s)/2;
        if(v[mid]>=nr)
            gasit=mid,s=mid-1;
        if(v[mid]<nr)
            i=mid+1;
    }
    return gasit;
    }
int main()
    {
        int i,q,nr,s;
        cin>>n;
        for(i=1;i<=n;i++)
            cin>>v[i];
        cin>>s;
        for(i=1;i<=s;i++){
            cin>>q>>nr;
            if(q==0)
                cout<<i1(nr,n)<<'\n';
            if(q==1)
                cout<<i2(nr,n)<<'\n';
            if(q==2)
                cout<<i3(nr,n)<<'\n';
        }
    return 0;
}