Cod sursa(job #869561)

Utilizator bratiefanutBratie Fanut bratiefanut Data 1 februarie 2013 19:46:12
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include<iostream>
#include<fstream>
using namespace std;
int n,x,v[100000],j,m,k,tip,val;
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    for (int i=1;i<=n;i++)
        f>>v[i];
    f>>k;
    for(j=1;j<=k;j++)
    {
        f>>tip>>x;
        int st=0, dr=n+1;
        if(tip==0)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x<v[m])
                dr=m;
                else
                st=m;
            }
            if(v[st]==x)
            g<<st<<endl;
            else g<<"-1"<<endl;
        }
        else
        if(tip==1)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x>=v[m])
                st=m;
                else
                dr=m;
            }
            g<<st<<endl;
        }
        else
        if(tip==2)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x<=v[m])
                dr=m;
                else
                st=m;
            }
            g<<dr<<endl;
        }
    }

    return 0;
}