Cod sursa(job #2085753)

Utilizator codrin18Diac Eugen Codrin codrin18 Data 10 decembrie 2017 17:42:56
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>
using namespace std;
int cautBinar0(int v[],int st,int dr,int val)
{
    int m;
    while(st<=dr)
    {
        m=(st+dr)/2;
        if (v[m]<=val)
            st=m+1;
        else
            dr=m-1;
    }
    m=(st+dr)/2;
    if (v[m]>val) m--;
    if (v[m]==val) return m;
    return -1;
}
int cautBinar1(int v[],int st,int dr,int val)
{
    int m;
    while(st<dr)
    {
        m=(st+dr)/2;
        if (v[m]<=val)
            st=m+1;
        else
            dr=m;
    }
    m=(st+dr)/2;
    if (v[m]>val) m--;
    return m;
}
int cautBinar2(int v[],int st,int dr,int val)
{
    int m;
    while(st<dr)
    {
        m=(st+dr)/2;
        if (v[m]<val)
            st=m+1;
        else
            dr=m;
    }
    m=(st+dr)/2;
    if (v[m]<val) ++m;
    return m;
}
int main()
{
    int q,t,x[100],n,m;
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    for (int i=1;i<=n;i++)
        f>>x[i];
    f>>m;
    for (int i=1;i<=m;i++)
    {
        f>>q>>t;
        if (q==0) g<<cautBinar0(x,1,n,t)<<"\n";
        if (q==1) g<<cautBinar1(x,1,n,t)<<"\n";
        if (q==2) g<<cautBinar2(x,1,n,t)<<"\n";
    }
    return 0;
}