Cod sursa(job #2466658)

Utilizator sandifx68Fazakas Alexandru sandifx68 Data 2 octombrie 2019 19:36:05
Problema Cautare binara Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.38 kb
#include <cstdio>
int a[100001];
int main()
{
    FILE *f=fopen("cautbin.in","r");
    FILE *g=fopen("cautbin.out","w");
    int N,M,tip,x,i,li,lf,m,nem=-1;
    fscanf(f,"%d",&N);
    for(i=1;i<=N;i++)
        fscanf(f,"%d",&a[i]);
    fscanf(f,"%d",&M);
    for(i=1;i<=M;i++)
    {
        fscanf(f,"%d%d",&tip,&x);
        if(tip==0)
        {
            li=1;
            lf=N;
            while(li<=lf)
            {
                m=(li+lf)/2;
                if(x>=a[m])
                    li=m+1;
                else lf=m-1;
                m=(li+lf)/2;
            }
            if(li>N || x!=a[m])
                fprintf(g, "%d  \n",nem);
            else fprintf (g, "%d \n", m);

        }
        if(tip==1)
        {
            li=1;
            lf=N;
            while(li<=lf)
            {
                m=(li+lf)/2;
                if(x>=a[m])
                    li=m+1;
                else lf=m-1;
                m=(li+lf)/2;
            }
            fprintf(g, "%d  \n",lf);
        }
        if(tip==2)
        {
            li=1;
            lf=N;
            while(li<=lf)
            {
                m=(li+lf)/2;
                if(x<=a[m])
                    lf=m-1;
                else li=m+1;
                m=(li+lf)/2;
            }
            fprintf (g, "%d \n", li);
        }
    }
    return 0;
}