Cod sursa(job #1901728)

Utilizator TavinciStefanescu Octavian Tavinci Data 4 martie 2017 10:52:03
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.81 kb
#include <iostream>
#include <fstream>

using namespace std;
int n, sir[100001], numarDorit, m;
short cerinta;
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");

    int cautareBin0(int vec[], int nr, int i, int s)
    {
        int mid;
        while(s-i>1)
        {
            mid=(s+i)/2;
            if(vec[mid]<=nr)
            {
                i=mid;
            }
            else
            {
                s=mid;
            }
        }
        if(vec[s]==nr)
        return s;
        else
        return i;
    }
    int cautareBin1(int vec[], int nr, int i, int s)
    {
        int mid;
            while(s-i>1)
            {
                mid=(s+i)/2;
                if(vec[mid]<=nr)
                {
                    i=mid;
                }
                else
                {
                    s=mid;
                }
            }
            if(vec[s]<=nr)
                return s;
            else
                return i;
    }
 int cautareBin2(int vec[], int nr, int i, int s)
    {
        int mid;
        while(s-i>1)
        {
            mid=(s+i)/2;
            if(vec[mid]>=nr)
            {
                s=mid;
            }
            else
            {
                i=mid;
            }
        }
        if(vec[i]>=nr)
        return i;
        else
        return s;
    }

int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>sir[i];
    }
    fin>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>cerinta>>numarDorit;
        if(cerinta==0)
        fout<<cautareBin0(sir,numarDorit,1,n)<<'\n';
        else if(cerinta==1)
        fout<<cautareBin1(sir,numarDorit,1,n)<<'\n';
        else
        fout<<cautareBin2(sir,numarDorit,1,n)<<'\n';
    }


    return 0;
}