Cod sursa(job #1846639)

Utilizator ovidiu_zic@yahoo.comPurecel Mihai [email protected] Data 13 ianuarie 2017 19:23:53
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int L=16;
int a[100001], n;

int caut0(int x){
    int r = 0, pas = 1<<L;
    while(pas!=0){
        if(r+pas<=n && a[r+pas]<=x)
            r+=pas;
        pas/=2;
    }
    if(a[r]!=x)
        return -1;
    return r;
}
int caut1(int x){
    int r = 0, pas = 1<<L;
    while(pas!=0){
        if(r+pas<=n && a[r+pas]<=x)
            r+=pas;
        pas/= 2;
    }
    return r;
}
int caut2(int x){
    int r = 0, pas = 1<<L;
    while(pas!=0){
        if(r+pas<=n && a[r+pas]<x)
            r+=pas;
        pas/= 2;
    }
    return r+1;
}


int main()
{
    int m,op,x,i;
    in>>n;
    for(i=1;i<=n;i++)
        in>>a[i];
    in>>m;
    for(i=1;i<=m;i++)
    {
        in>>op>>x;
        if(op == 0)
            out<<caut0(x)<<"\n";
        if(op == 1)
            out<<caut1(x)<<"\n";
        if(op == 2)
            out<<caut2(x)<<"\n";
    }


    return 0;
}