Cod sursa(job #2767937)

Utilizator Dora.glaGlavan Dora-Nicola Dora.gla Data 8 august 2021 17:22:13
Problema Cautare binara Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.53 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int main()
{
    int N,x[1000],M,y[1000],z,li,lf,m,ras[1000],i;
    fin>>N;
    for(i=1;i<=N;i++)
    {
        fin>>x[i];
    }
    fin>>M;
    for(i=1;i<=M;i++)
    {
        fin>>y[i]>>z;
        switch(y[i])
        {
            case 0:
                li=1;lf=N;
                m=(li+lf)/2;
                while(li<=lf)
                {
                    if(z>=x[m])
		                li=m+1;
                    else
                        lf=m-1;
                    m=(li+lf)/2;
                }
                if(lf>=1 && x[lf]==z)  ras[i]=lf;
	            else   ras[i]=-1;
	            break;
	        case 2:
	            li=1;lf=N;
                m=(li+lf)/2;
                while(li<=lf)
                {
                    if(z<=x[m])
		                lf=m-1;
                    else
                        li=m+1;
                    m=(li+lf)/2;
                }
                ras[i]=li;
                break;
            case 1:
                li=1;lf=N;
                m=(li+lf)/2;
                while(li<=lf)
                {
                    if(z>=x[m])
		                li=m+1;
                    else
                        lf=m-1;
                    m=(li+lf)/2;
                }
                ras[i]=lf;
	            break;
        }

    }
    for(i=1;i<=M;i++)
    {
        fout<<ras[i]<<'\n';
    }
    return 0;
}