Cod sursa(job #1809854)

Utilizator turnenTudor Oprescu turnen Data 19 noiembrie 2016 12:52:33
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int L=16;
int v[100001];
int caut(int l,int a,int x)
{
    int r=0,pas=1<<L;
    while(pas!=0)
    {
        if(a<=1)
        {
            if(r+pas<=l&&v[r+pas]<=x)
            {
                r+=pas;
            }
        }
        else
        {
            if(r+pas<=l&&v[r+pas]<x)
            {
                r+=pas;
            }
        }
        pas/=2;
    }
        if(a<=1)
        {
            return r;
        }
        else
        {
            return 1+r;
        }

}
int main()
{
    int n,t,a,b,i;
    in>>n;
    for(i=1; i<=n; i++)
    {
        in>>v[i];
    }
    in>>t;
    for(i=1; i<=t; i++)
    {
        in>>a>>b;
        out<<caut(n,a,b)<<'\n';
    }
}