Cod sursa(job #3288486)

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

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

int v[100001],acc,p,n;
bool conditie(int caz,int nr)
{
    int index;
    index=p+acc;
    if(index>n)return 0;
    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 m;
    int index;
    int k;
    f>>n;
    for(int i=1;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<<" "<<acc<<" "<<v[acc]<<endl;
            else g<<acc<<endl;
        }
        else if(caz==1)
        {
            g<<acc<<endl;
        }
        else if(caz==2)
        {
            g<<acc+1<<endl;
        }

    }



    return 0;
}
/*
10
1 2 4 4 4 5 6 7 9 20

p=8

3
0 20
1 6
2 9

*/