Cod sursa(job #1395729)

Utilizator andreit133Damian Andrei andreit133 Data 21 martie 2015 13:15:37
Problema Cautare binara Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.31 kb
#include <stdio.h>
#include <stdlib.h>

int v[100001];

int main()
{
    FILE *in , *out;
    in=fopen("cautbin.in","r");
    out=fopen("cautbin.out","w");
    int nelem , i , m , c, cer , n , pas;
    fscanf(in,"%d",&nelem);
    for(i=1 ; i<=nelem ; i++)
        fscanf(in,"%d",&v[i]);
    fscanf(in,"%d",&m);
    for(c=1 ; c<=m ; c++)
    {
        fscanf(in,"%d",&cer);
        fscanf(in,"%d",&n);
        if(cer==0)
        {
            i=0;
            pas=1<<16;
            while(pas!=0)
            {
                if(i+pas<=nelem && v[i+pas]<=n)
                    i+=pas;
                pas/=2;
            }
            if(v[i]==n)
                fprintf(out,"%d",i);
            else
                fprintf(out,"-1");
        }
        if(cer==1)
        {
            i=0;
            pas=1<<16;
            while(pas!=0)
            {
                if(i+pas<=nelem && v[i+pas]<=n)
                    i+=pas;
                pas/=2;
            }
            fprintf(out,"%d",i);
        }
        if(cer==2)
        {
            i=0;
            pas=1<<16;
            while(pas!=0)
            {
                if(i+pas<=nelem && v[i+pas]<n)
                    i+=pas;
                pas/=2;
            }
            i++;
            fprintf(out,"%d",i);
        }
        fprintf(out,"\n");
    }


    return 0;
}