Cod sursa(job #1145314)

Utilizator 0051David Sera 0051 Data 18 martie 2014 09:07:20
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

#define MAX 100005

int n,s;
int a[MAX];

void caut1(int x)
{
    int st=0,dr=n,m;
    s=-1;
    while(st<=dr){
        m=(st+dr)/2;
        if(a[m]==x)
            s=m;
        if(a[m]>x)
            dr=m-1;
        else
            st=m+1;
    }
    fout<<s<<"\n";
}

void caut2(int x)
{
    int st=0,dr=n,m;
    s=-1;
    while(st<=dr){
        m=(st+dr)/2;
        if(a[m]<=x){
            s=m;
            st=m+1;
        }
        else
            dr=m-1;
    }
    fout<<s<<"\n";
}

void caut3(int x)
{
    int st=0,dr=n,m;
    s=-1;
    while(st<=dr){
        m=(st+dr)/2;
        if(a[m]>=x){
            s=m;
            dr=m-1;
        }
        else
            st=m+1;
    }
    fout<<s<<"\n";
}

int main()
{
    fin>>n;
    int i,x,y,t;
    for(i=1;i<=n;i++)
        fin>>a[i];
    fin>>t;
    while(t--)
    {
        fin>>x>>y;
        if(x==0)
            caut1(y);
        else if(x==1)
                caut2(y);
            else
                caut3(y);
    }
    fin.close();
    fout.close();
    return 0;
}