Cod sursa(job #2095661)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 27 decembrie 2017 22:54:19
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.42 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[100001];
int cb(int n,int a[],int ce )
{
int st=1;int dr=n;int mij;
while(dr>=st)
{
    mij=(st+dr)/2;
    if(a[mij]>ce)
        dr=mij-1;
    else
        st=mij+1;
}
if(a[dr]==ce)
    return dr;
    else return -1;
}
int cb1(int n,int a[],int ce)
{
    int st=1;int dr=n;int mij;
    while(dr>=st)
    {
        mij=(st+dr)/2;
        if(a[mij]<=ce)
            {if(dr-st==1)
            if(a[dr]>ce)
                  return st;
                else return dr;
            else
            st=mij;}
        else
            dr=mij-1;

    }
}
int cb2(int n,int a[],int ce)
{
    int st=1;int dr=n;int mij;
    while(dr>=st)
    {
        mij=(st+dr)/2;
        if(a[mij]>=ce)
            {if(dr-st==1)
            if(a[st]<ce)
        return dr;
            else return st;
        else
            dr=mij;}
        else
            st=mij+1;
    }

}
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int main()
{
    int n,i,d,x,b,e,m;
        in>>n;
    for(i=1;i<=n;i++)
        in>>a[i];
        in>>m;
    for(i=1;i<=m;i++)
    {
        in>>b>>x;
        if(b==0){
        d=cb(n,a,x);
        out<<d<<'\n';}
        if(b==1)
        {
        d=cb1(n,a,x);
        out<<d<<'\n';
        }
        if(b==2)
        {
        d=cb2(n,a,x);
        out<<d<<'\n';
        }
    }
    return 0;
}