Cod sursa(job #2755089)

Utilizator raduapreotesei1Apreotesei Radu raduapreotesei1 Data 26 mai 2021 19:28:25
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.72 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int a[100002];

void cautarebinara(int n,int m)
{
    fin>>n;
    for(int i=0;i<n;i++)
        fin>>a[i];
    fin>>m;
    int x;
    int c;
    for(int j=0;j<m;j++)
    {
        fin>>c;
        fin>>x;
        int st,dr,mij;
        int p=-2;
        if(c==0)
        {
            st=0;
            dr=n-1;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(x==a[mij])
                {
                    p=mij;
                    st=mij+1;
                }
                else
                    if(x>a[mij])
                        st=mij+1;
                    else
                        dr=mij-1;
            }
            fout<<p+1<<"\n";
        }
        p=-1;
        if(c==1)
        {
            st=0;
            dr=n-1;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(x>=a[mij])
                {
                    p=mij;
                    st=mij+1;
                }
                if(x<a[mij])
                    dr=mij-1;
            }
            fout<<p+1<<"\n";
        }
        p=-1;
        if(c==2)
        {
            st=0;
            dr=n-1;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(x<=a[mij])
                {
                    p=mij;
                    dr=mij-1;
                }
                if(x>a[mij])
                    st=mij+1;
            }
            fout<<p+1<<"\n";
        }
    }
}

int main()
{
    int n,m;
    cautarebinara(n,m);
    return 0;
}