Cod sursa(job #2262120)

Utilizator alex.cojocaruAlex Cojocaru alex.cojocaru Data 16 octombrie 2018 23:26:12
Problema Cautare binara Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.59 kb
#include <stdio.h>
#include <stdlib.h>
int v[100000];
int main()
{
    FILE*fin,*fout;
    fin=fopen("cautbin.in","r");
    fout=fopen("cautbin.out","w");
    int n,m,dreapta,stinga,e,x,mijloc,i;
    fscanf(fin,"%d",&n);
    for(i=0; i<n; i++)
    {
        fscanf(fin,"%d",&v[i]);
    }
    fscanf(fin,"%d",&m);
    for(i=0; i<m; i++)
    {
        stinga = 0;
        dreapta = n;
        fscanf(fin,"%d%d",&x,&e);
        if(x==0)
        {
            while ( dreapta - stinga > 1 )
            {
                mijloc = (stinga + dreapta) / 2;
                if ( v[mijloc] > e )
                    dreapta = mijloc;
                else
                    stinga = mijloc;
            }
            if ( e == v[stinga] )
                fprintf(fout,"%d\n",stinga+1);
            else
                fprintf(fout,"-1\n");
        }
        if(x==1)
        {
            while ( dreapta - stinga > 1 )
            {
                mijloc = (stinga + dreapta) / 2;
                if ( v[mijloc] > e )
                    dreapta = mijloc;
                else
                    stinga = mijloc;
            }
            fprintf(fout,"%d\n",stinga+1);
        }
        if(x==2)
        {
            while ( dreapta - stinga > 1 )
            {
                mijloc = (stinga + dreapta) / 2;
                if ( v[mijloc] > e )
                    dreapta = mijloc;
                else
                    stinga = mijloc;
            }
            fprintf(fout,"%d",dreapta+1);
        }
    }
    fclose(fin);
    fclose(fout);
    return 0;
}