Cod sursa(job #869667)

Utilizator bratiefanutBratie Fanut bratiefanut Data 1 februarie 2013 22:27:33
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include<stdio.h>
int n,x,v[10000],m,k,tip;
int main()
{
    FILE *f,*g;
    f=fopen("cautbin.in","r");
    g=fopen("cautbin.out","w");
    fscanf(f,"%d",&n);
    for (int i=1;i<=n;i++)
        fscanf(f,"%d",&v[i]);
    fscanf(f,"%d",&k);
    for(int j=1;j<=k;j++)
    {
        fscanf(f,"%d %d",&tip,&x);
        int st=0, dr=n+1;
        if(tip==0)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x<v[m])
                dr=m;
                else
                st=m;
            }
            if(v[st]==x)
            fprintf(g,"%d\n",st);
            else fprintf(g,"-1\n");
        }
        else
        if(tip==1)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x>=v[m])
                st=m;
                else
                dr=m;
            }
            fprintf(g,"%d\n",st);
        }
        else
        if(tip==2)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x<=v[m])
                dr=m;
                else
                st=m;
            }
            fprintf(g,"%d\n",dr);
        }
    }
fclose(f);
fclose(g);
    return 0;
}