Cod sursa(job #2208527)

Utilizator MatteoalexandruMatteo Verzotti Matteoalexandru Data 30 mai 2018 09:34:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>

using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int st,dr,rez=-1,n,mid,m,i,j,t,x;
int v[100001];
int c1(int x)
{
    st=1; dr=n;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(x<v[mid])
            dr=mid-1;
        else if(x>v[mid])
            st=mid+1;
        else
        {
            rez=mid;
            st=mid+1;
        }
    }
    return rez;
}
int c2(int x)
{
    st=1; dr=n;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(v[mid]>x)
            dr=mid-1;
        else
        {
            rez=mid;
            st=mid+1;
        }
    }
    return rez;
}
int c3(int x)
{
    st=1; dr=n;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(v[mid]<x)
            st=mid+1;
        else
        {
            dr=mid-1;
            rez=mid;
        }
    }
    return rez;
}
int main()
{
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    in>>m;
    for(j=1;j<=m;j++)
    {
        in>>t>>x;
        if(t==0)
            out<<c1(x)<<'\n';
        else if(t==1)
            out<<c2(x)<<'\n';
        else
            out<<c3(x)<<'\n';
        rez=-1;
    }
    return 0;
}