Cod sursa(job #1953811)

Utilizator anisca22Ana Baltaretu anisca22 Data 5 aprilie 2017 00:44:15
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m,a[100005],type,key;
int cautbin0(int st,int dr)
{
    if(st>=dr)
    {
        if(a[st-1]==key)
            return st-1;
        return -1;
    }
    int mij=(st+dr)/2;
    if(a[mij]<=key)
        return cautbin0(mij+1,dr);
    return cautbin0(st,mij);
}
int cautbin1(int st,int dr)
{
    if(st>=dr)
        return st-1;
    int mij=(st+dr)/2;
    if(a[mij]<=key)
        return cautbin1(mij+1,dr);
    return cautbin1(st,mij);
}
int cautbin2(int st,int dr)
{
    if(st>=dr)
        return st+1;
    int mij=(st+dr)/2+1;
    if(a[mij]>=key)
        return cautbin2(st,mij-1);
    return cautbin2(mij,dr);
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)fin>>a[i];
    fin>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>type>>key;
        if(type==0)
            fout<<cautbin0(1,n)<<"\n";
        else if(type==1)
            fout<<cautbin1(1,n)<<"\n";
        else fout<<cautbin2(1,n)<<"\n";
    }
    return 0;
}