Cod sursa(job #1003308)

Utilizator PlatonPlaton Vlad Platon Data 30 septembrie 2013 12:52:50
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("cautbin.in");
//ofstream g("cautbin.in");

int n,op,x,a[100000];

int cb1(int st, int dr, int x)
{
    int mij = (st+dr)/2;

    if(dr-st<2)
    {
        return -1;
    }

    if(a[mij]==x)
    {
        int i=mij;
        while(a[i]==x)
        {
            i++;
        }
        return i-1;
    }
    else
    {
        if(x<a[mij])
        {
            return cb1(st, mij, x);
        }
        else
        {
            return cb1(mij,dr,x);
        }
    }
}

int main()
{
    f>>n;

    for(int i=0;i<n;i++)
    {
        f>>a[i];
    }
    int m;
    f>>m;
    for(int i=0;i<m;i++)
    {
        f>>op;
        f>>x;

        switch(op)
        {
            case 0:
                cout<<cb1(0,n,x)+1;
                break;
            case 1:
                cout<<cb2(0,n,x)+1;
                break;
            case 2:
                break;
        }
    }

    return 0;
}