Cod sursa(job #2218574)

Utilizator badassmuffinAndrei Stefanescu badassmuffin Data 5 iulie 2018 00:17:57
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");

int cb0(int s, int d, int x, int v[])
{
    int m;
    m=(s+d+1)/2;
        if(s==d)
           return s;

        else if(x>=v[m]) return cb0(m, d, x, v);
        else if(x<v[m]) return cb0(s, m-1, x, v);

}
int cb1(int s, int d, int x, int v[])
{
    int m;
    m=(s+d+1)/2;
        if(s==d)
        {
            return s;
        }
        if(x>=v[m]) return cb1(m, d, x, v);

        else  return cb1(s, m-1, x, v);

}
int cb2(int s, int d, int x, int v[])
{
    int m;
    m=(s+d)/2;
        if(s==d)
        {
            return s;
        }
        if(x<=v[m]) return cb2(s, m, x, v);

        else  return cb2(m+1, d, x, v);

}
int v[100000];
int main()
{
    int n, m, i, x, c, p;
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    in>>m;
    for(i=1;i<=m;i++)
    {
        in>>c>>x;
        if(c==0)
        {
            p=cb0(1, n, x, v);
            if(x!=v[p]) out<<-1<<endl;
            else out<<p<<endl;
        }
        if(c==1) out<<cb1(1, n, x, v)<<endl;
        if(c==2) out<<cb2(1, n, x, v)<<endl;
    }
    return 0;
}