Cod sursa(job #901249)

Utilizator paulpetanPetan Paul paulpetan Data 1 martie 2013 09:05:04
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include <iostream>
#include <fstream>

using namespace std;
int v[100001];

int main()
{
    int n,m,i,tip,a,st,dr,mij;
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
    }
    f>>m;
    for(i=1;i<=m;i++)
    {
        f>>tip>>a;
        st=1;
        dr=n+1;
        if(tip==0)
        {
            while(dr-st>1)
            {
                mij=(dr+st)/2;
                if(a>=v[mij])
                {
                    st=mij;
                }
                else dr=mij;
            }
            if(a==v[st])g<<st<<'\n';
            if(a==v[dr])g<<dr<<'\n';
            if(a!=v[st] && a!=v[dr])g<<"-1"<<'\n';
        }
        if(tip==1)
        {
           st=1;
           dr=n+1;
            while(dr-st>1)
            {
                mij=(dr+st)/2;
                if(a>=v[mij])
                {
                    st=mij;
                }
                else dr=mij;
            }
            g<<st<<'\n';
        }
        if(tip==2)
        {
            st=1;
            dr=n+1;
            while(dr-st>1)
            {
                mij=(dr+st)/2;
                if(a<=v[mij])
                {
                    dr=mij;
                }
                else st=mij;
            }
            g<<dr<<'\n';
        }
    }
    return 0;
}