Cod sursa(job #2795301)

Utilizator rARES_4Popa Rares rARES_4 Data 6 noiembrie 2021 10:57:09
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int n,q,p = 1,op,x;
int v[100001];
int main()
{
    f >> n;
    while(p<=n)
        p<<=1;
    for(int i = 1; i<=n; i++)
        f >>v[i];
    f >> q;
    for(int i = 1; i<=q; i++)
    {
        f >> op>>x;
        if(op == 0)
        {
            int j,l;
            for(j = 1,l = p; l; l>>=1)
                if(j+l<=n && v[j+l]==x)
                    j+=l;
            if(v[j] == x)
                g << j<< "\n";
            else
                {
                    g <<"-1\n";
                }
        }
        else if(op == 1)
        {
            int j,l;
            for(j = 1,  l =p; l!=0; l>>=1)
                if(j+l<=n && v[j+l]<=x)
                    j+=l;
            if(v[j] <= x)
                g << j<< "\n";
            else
                g <<"-1\n";
        }
        else if(op == 2)
        {
            int j,l;
            for(j = n,  l = p; l!=0; l>>=1)
                if(j-l>=1 && v[j-l]>=x)
                    j-=l;
            if(v[j] >= x)
                g << j<< "\n";
            else
                g <<"-1\n";
        }

    }
}