Cod sursa(job #1325734)

Utilizator CostenarCostenarGabriel Costenar Data 24 ianuarie 2015 12:07:49
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
#include <iostream>
#include <fstream>

using namespace std;
fstream fin("cautbin.in",ios::in),
        fout("cautbit.out",ios::out);


int cautare0(int n,int x[100],int E)
{
    int st=1,dr=n,sol=-1,m;
    while(st<=dr)
    {
        m=(st+dr)/2;
        if(x[m]==E)
        {
            sol=m;
            st=m+1;
        }
        if(x[m]<E)
        {
            st=m+1;
        }
        if(x[m]>E)
        {
            dr=m-1;
        }
    }
    return sol;
}
int cautare1(int n,int x[100],int E)
{
    int st=1,dr=n,sol=-1,m;
    while(st<=dr)
    {
        m=(st+dr)/2;
        if(x[m]<=E)
        {
            sol=m;
            st=m+1;
        }
        if(x[m]>E)
        {
            dr=m-1;
        }
    }
    return sol;
}
int cautare2(int n,int x[100],int E)
{
    int st=1,dr=n,sol=-1,m;
    while(st<dr)
    {
        m=(st+dr)/2;
        if(x[m]>=E)
        {
            sol=m;
            dr=m-1;
        }
        if(x[m]<E)
        {
            st=m+1;
        }
    }
    return sol;
}
int main()
{
    int N,M,n[100],op,m[100],i;
    fin>>N;
    for(i=1;i<=N;i++)
    {
        fin>>n[i];
    }
    fin>>M;
    for(i=1;i=M;i++)
    {
        fin>>op>>m[i];
        if(op==0)
        {
            fout<<cautare0(N,n,m[i]);
        }
        if(op==1)
        {
            fout<<cautare1(N,n,m[i]);
        }
        if(op==2)
        {
            fout<<cautare2(N,n,m[i]);
        }
    }
    fin.close();
    fout.close();
    return 0;
}