Cod sursa(job #2645809)

Utilizator MateGMGozner Mate MateGM Data 29 august 2020 17:06:36
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream be("cautbin.in");
ofstream ki("cautbin.out");
int binary_0(int a[],int bal,int jobb,int k)
{

    int x=-1;
    while(bal<jobb)
    {
        int m=(bal+jobb)/2;
        if(a[m]==k &&a[m+1]!=k){x=m;break;}
        else if(k>=a[m]){
            bal=m+1;
        }
        else if(k<a[m])jobb=m-1;

    }
return x;
}
int binary_1(int a[],int bal,int jobb,int k)
{
    int x=-1;
    while(bal<jobb)
    {
         int m=(bal+jobb)/2;
        if(a[m]==k &&a[m+1]!=k){return m;}
        else if(k>=a[m]){
            bal=m+1;
        }
        else if(k<a[m])jobb=m-1;
    }
}
int binary_2(int a[],int bal,int jobb,int k)
{
    int x=-1;
    while(bal<jobb)
    {
         int m=(bal+jobb)/2;
        if(a[m]==k &&a[m-1]!=k){return m;}
        else if(k>a[m]){
            bal=m+1;
        }
        else if(k<=a[m])jobb=m-1;
    }
}
int main()
{
    int n,a[100000],m,k,x;
    be>>n;
    for(int i=1;i<=n;++i)
    {
        be>>a[i];
    }
    be>>m;
    for(int i=1;i<=m;++i)
    {
        be>>x;
        be>>k;
        if(x==0)ki<<binary_0(a,1,n,k)<<"\n";
        else if(x==1)ki<<binary_1(a,1,n,k)<<"\n";
        else if(x==2)ki<<binary_2(a,1,n,k)<<"\n";
    }
    return 0;
}