Cod sursa(job #2096417)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 29 decembrie 2017 09:51:29
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 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-st)/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-st)/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-st)/2;
        if(a[mij]>=ce)
            dr=mij;
        else
            st=mij+1;
    }
    if(ce>=a[st])
        return st;

}
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;
}