Cod sursa(job #945652)

Utilizator andru47Stefanescu Andru andru47 Data 2 mai 2013 14:50:28
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include <fstream>
using namespace std;
int i,instr,mij,st,dr,x,m,a[100001],n,k;
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f >> n;
    for (i=1; i<=n; i++)
        f >> a[i];
    f >> m;
    for (i=1; i<=m; i++)
    {
        f >> instr >> x;
        st=1;
        dr=n;
        if (instr==0)
        {
            while (st<=dr)
            {
                mij=(st+dr)/2;
                if (x>=a[mij])
                    st=mij+1;
                else dr=mij-1;
            }
            mij=(st+dr)/2;
            if (a[mij]>x)mij--;
            if (a[mij]==x)g << mij <<'\n';
            else g<< "-1" << '\n';
        }
        if (instr==1)
        {
            while(st < dr)
            {
                mij=(st+dr)/2;
                if(x>=a[mij])
                    st=mij+1;
                else
                    dr=mij;
            }
            mij=(st+dr)/2;
            if (a[mij]>x)mij--;
            g << mij << '\n';
        }
        if (instr==2)
        {
            while(st<dr)
            {
                mij=(st+dr)/2;
                if(x>a[mij])
                    st=mij+1;
                else
                    dr=mij;
            }
            mij=(st+dr)/2;
            if(a[mij]<x) mij++;
            g << mij << '\n';
        }
    }
    return 0;
}