Cod sursa(job #1424800)

Utilizator DiamondSealChirita Claudian DiamondSeal Data 25 aprilie 2015 15:34:08
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001];
int main()
{
    int n,m,x,p,pas,i;
    in>>n;
    for(int i=1;i<=n;i++)
     in>>v[i];
    in>>m;
    for(int j=1;j<=m;j++)
    {
        in>>p;
        in>>x;
        pas=1<<16;
        i=0;
        if(p==0 || pas==1)
        {
            while(pas!=0)
            {
                if(i+pas<=n && v[i+pas]<=x)
                 i+=pas;
                pas/=2;
            }
            if(p==0 && v[i]!=x)
             out<<-1<<"\n";
            else
             out<<i<<"\n";
        }
        else
        {
            while(pas!=0)
            {
                if(i+pas<=n && v[i+pas]<x)
                 i+=pas;
                pas/=2;
            }
            out<<i+1<<"\n";
        }
    }
    return 0;
}