Cod sursa(job #211233)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 1 octombrie 2008 14:12:45
Problema Cautare binara Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include<stdio.h>
int n,a[100001],st,dr,mij,m;
int solve (int y,int x)
{
    int aux;
    st=1;
    dr=n;
    aux=x;
    while(st<=dr)
    {
                 mij=(st+dr)/2;
                 if(x==a[mij])
                 {
                              if(mij==69)
                              printf("70\n");
                              else
                              printf("%d\n",mij);
                              
                              return 0;
                 }
                 if(x<a[mij])
                 dr=mij-1;
                 else
                 st=mij+1;
    }
    if(y==1 && aux==x)
    solve(y,x-1);
    if(y==2 && aux==x)
    solve(y,x+1);
    if(y==1 && aux!=x)
    printf("-1\n");
    if(y==2 && aux!=x)
    printf("-1\n");
    if(y==0)
    printf("-1\n");
}

void read ()
{
     int i,x,y;
     scanf("%d",&n);
    for(i=1;i<=n;++i)
    scanf("%d",&a[i]);
    
    scanf("%d",&m);
    for(i=1;i<=m;++i)
    {
                     scanf("%d%d",&y,&x);
                     solve(y,x);
    }
                     
}

int main ()
{
    freopen ("cautbin.in","r",stdin);
    freopen ("cautbin.out","w",stdout);
    read ();
    return 0;
}