Cod sursa(job #241081)

Utilizator firewizardLucian Dobre firewizard Data 9 ianuarie 2009 12:58:02
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <stdio.h>     
long a[100001];     
long x,y,n,l,m,i,ok;     
long bs(int x,long min,long max)     
{     
    long mij;     
    while (min<max){     
          mij=min+((max-min)/2);     
          if (a[mij]<x)min=mij+1;     
          else max=mij;     
          }     
    if (min<=n&&a[min]==x)     
       return min;     
    else {     
         ok=min;     
         return -1;     
         }     
}     
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 (i=1;i<=m;++i){     
        scanf("%ld %ld",&x,&y);     
        if(x==0)printf("%ld\n",bs(y,1,n+1));     
        else if(x==1){     
             l=bs(y,1,n+1);     
             if(l==-1) printf("%ld\n",ok-1);     
             else printf("%ld\n",l);     
             }     
             else{     
             l=bs(y,1,n+1);     
             if(l==-1)printf("%ld\n",ok);     
             else printf("%ld\n",l);     
             }     
        }     
    return 0;     
}