Cod sursa(job #3297663)

Utilizator brianabucur11Briana Bucur brianabucur11 Data 23 mai 2025 13:02:33
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <bits/stdc++.h>

using namespace std;

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

const int nmax=2e5+5;

int n, v[nmax];


int cb0 (int n, int x)
{
    int origin=0;
    for (int p=12; p>=0; p--)
    {
        if (v[origin+(1<<p)]<=x && v[origin+(1<<p)]!=0)
            origin+=(1<<p);
    }
    if (v[origin]==x)
        return origin;
    return -1;
}

int cb1 (int n, int x)
{
    int origin=0;
    for (int p=12; p>=0; p--)
    {
        if (v[origin+(1<<p)]<=x && v[origin+(1<<p)]!=0)
            origin+=(1<<p);
    }
    if (v[origin]==x)
        return origin;
    return origin+1;
}

int cb2 (int n, int x)
{
    int origin=0;
    for (int p=12; p>=0; p--)
    {
        if (v[origin+(1<<p)]<x && v[origin+(1<<p)]!=0)
            origin+=(1<<p);
    }
    return origin+1;
}

int main()
{
    fin >> n;
    for (int i=1; i<=n; i++)
        fin >> v[i];
    int q;
    fin >> q;
    for (int i=1; i<=q; i++)
    {
        int cer, x;
        fin >> cer >> x;
        if (cer==0)
            fout << cb0(n,x) << '\n';
        if (cer==1)
            fout << cb1(n,x) << '\n';
        if (cer==2)
            fout << cb2(n,x) << '\n';
    }
    return 0;
}