Cod sursa(job #3288476)

Utilizator denis_furtunaFurtuna Denis denis_furtuna Data 22 martie 2025 15:17:17
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int v[100001],acc,p;
bool conditie(int caz,int nr)
{
    int index=p+acc;
    if(caz==0)
    {
        if(v[index]<=nr)return 1;
    }
    else if(caz==1)
    {
        if(v[index]<=nr)return 1;
    }
    else if(caz==2)
    {
        if(v[index]<nr)return 1;
    }
    return 0;
}

int main()
{
    int putere,caz,nr;
    int n,m;
    int index;
    int k;
    f>>n;
    for(int i=0;i<n;++i)
        f>>v[i];

    putere=1;
    while(putere*2<=n)
        putere*=2;

    f>>m;
    for(int i=0;i<m;++i)
    {
        acc=0;
        p=putere;
        f>>caz>>nr;
        while(p>0)
        {

            if(conditie(caz,nr))acc+=p;
            p=p>>1;
        }
        if(caz==0)
        {
            if(v[acc]!=nr)g<<-1<<endl;
            else g<<acc+1<<endl;
        }
        else if(caz==1)
        {
            g<<acc+1<<endl;
        }
        else if(caz==2)
        {
            g<<acc+2<<endl;
        }

    }



    return 0;
}
/*


*/