Cod sursa(job #195082)

Utilizator cnatlLaurian cnatl Data 16 iunie 2008 17:03:27
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<stdio.h>
long a[100001],x,n,m,i,c;
long cb0(long st,long dr);
long cb1(long st,long dr);
long cb2(long st,long dr);
int main()
{
        freopen("cautbin.in","r",stdin);
        freopen("cautbin.out","w",stdout);
        scanf("%ld",&n);
        for(i=1;i<=n;i++)scanf("%ld",&a[i]);
        scanf("%ld",&m);
        for(;m;m--)
        { scanf("%ld%ld",&c,&x);
          if(c==1){printf("%ld",cb1(1,n));continue;}
          if(c==2){cb2(1,n);continue;}
          cb0(1,n);
        }
        return 0;
}
long cb0(long st,long dr)
{
        long mid;
        if(a[st]>x)return -1;
        if(a[dr]<x)return -1;
        if(dr-st>1)
        { mid=(st+dr)>>1;
          if(a[mid]>x)return cb0(st,mid-1);
          return cb0(mid,dr);
        }
        if(a[dr]==x)return dr;
        if(a[st]==x)return st;
        return -1;
}
long cb1(long st,long dr)
{
        return -1;
}
long cb2(long st,long dr)
{
        return -1;
}