Cod sursa(job #941390)

Utilizator lica.iosifLica Iosif lica.iosif Data 18 aprilie 2013 17:57:20
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,i,j,a[100],x;
int cbin0(int st,int dr,int x)
{
    int k;
    if(st>dr) return  -1;
    k=(st+dr)/2;
    if(a[k]==x&&a[k+1]!=x)return k;
    if(a[k]>x) return cbin0(st,k-1,x);
    else if(a[k]<=x)return cbin0(k+1,dr,x);
}
int cbin1(int st,int dr,int x)
{
    int k;
    if(st>dr) return -1;
    k=(st+dr)/2;
    if(a[k]==x&&a[k+1]!=x)return k;
    if(a[k]>x) return cbin1(st,k-1,x);
    else return cbin1(k+1,dr,x);
}
int cbin2(int st,int dr,int x)
{
    int k;
    if(st>dr) return -1;
    k=(st+dr)/2;
    if(a[k]==x&&a[k-1]!=x)return k;
    if(a[k]>=x) return cbin2(st,k-1,x);
    else return cbin2(k+1,dr,x);
}

int main()
{
    int p;
    f>>n;
    for(i=1; i<=n; i++)
        f>>a[i];
    f>>m;
    for(i=1; i<=m; i++)
        {f>>p>>x;
    if(p==0) g<<cbin0(1,n,x)<<endl;
    if (p==1)g<<cbin1(1,n,x)<<endl;
    if (p==2)g<<cbin2(1,n,x);}

}