Cod sursa(job #2989081)

Utilizator vlad2007_1Oprea Vlad Andrei vlad2007_1 Data 5 martie 2023 19:43:31
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.4 kb
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    int i,a,b,gasit,pi,pf,k,N,M,v[10000];
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>N;
    for(i=0;i<N;i++)
        f>>v[i];
    f>>M;

    for(i=0;i<M;i++)
    {
        f>>a>>b;
        if(a==0)
        {
            pi=0;
            pf=N-1;
            gasit=-2;
            while(pi<=pf)
            {
                k=(pi+pf)/2;
                while(v[k]==b)
                {
                    pi=k+1;
                    gasit=k;
                    k=(pi+pf)/2;
                }
                if(v[k]>b)
                    pf=k-1;
                else
                    pi=k+1;
            }
             cout<<gasit+1<<endl;
        }
        else if(a==1)
        {
            pi=0;
            pf=N-1;
            while(pi<pf)
            {
                k=(pi+pf)/2;
                if(v[k]<=b)
                    pi=k+1;
                else
                    pf=k-1;
            }
            cout<<k<<endl;
        }
        else if(a==2)
        {
            pi=0;
            pf=N-1;
            while(pi<=pf)
            {
                k=(pi+pf)/2;
                if(v[k]>=b)
                    pf=k-1;
                else
                    pi=k+1;
            }
            cout<<k+1<<endl;
        }
    }
    return 0;
}