Cod sursa(job #212725)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 6 octombrie 2008 17:53:13
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
long n,i,a[100005],m,t,x,poz;

long bsearch(long x){
    long low=1,high=n+1,mid;
    while (low<high){
          mid=(low+high)>>1;
          if (x<=a[mid])high=mid;
          else low=mid+1;
    }
return low;
}

int main(){
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%ld\n",&n);
    for (i=1;i<=n;++i)scanf("%ld",&a[i]);
    scanf("%ld",&m);
    while (m--){
          scanf("%ld %ld\n",&t,&x);
          if (t==0){poz=bsearch(x);if (a[poz]==x) while (x==a[poz+1])poz++;else poz=-1;}
          if (t==1){poz=bsearch(x);if (a[poz]==x) while (x==a[poz-1])poz--;else poz--;}
          if (t==2){poz=bsearch(x);/*if (a[poz]==x) while (x==a[poz+1])poz++;*/}
          printf("%ld\n",poz);
    }
return 0;
}