Cod sursa(job #2279881)

Utilizator mariamirabella2Bucur-Sabau Maria-Mirabela mariamirabella2 Data 10 noiembrie 2018 10:07:00
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>

using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

const int N = 100001;
const int L = 16;

int n,m,v[N],q;

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

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

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

int main()
{

    int x;
    fin>>n;
    for(int i=1;i<=n;++i)
    {
        fin>>v[i];
    }
    fin>>m;
    for(int j=1;j<=m;++j)
    {
        fin>>q>>x;
        if(q==0){
            fout << caut0(x) << '\n';
        }
        if(q==1){
            fout<<caut1(x)<<'\n';
        }
        if(q==2){
            fout<<caut2(x)<<'\n';
        }
    }
    return 0;
}