Cod sursa(job #211179)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 1 octombrie 2008 08:08:09
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 2.2 kb
#include<stdio.h>
int x,n,a[101],i,st,dr,mij,m,y,k,aux,nr;
int main ()
{
    freopen ("cautbin.in","r",stdin);
    freopen ("cautbin.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;++i)
    scanf("%d",&a[i]);
    
    scanf("%d",&m);
    for(i=1;i<=m;++i)
    {
                     if(k==0)
                     scanf("%d%d",&y,&x);
                     k=0;
                     ++nr;
                     st=1;
                     dr=n;
                     while(st<=dr)
                     {
                                 mij=(st+dr)/2;
                                 if(x==a[mij])
                                 {
                                              nr=0;
                                              printf("%d\n",mij);break;
                                 }
                                 if(x<a[mij])
                                 dr=mij-1;
                                 else
                                 st=mij+1;
                     }
                     if(st>dr)
                     {
                              if(y==1 && nr<=2)
                              {
                                      --x;
                                      --i;
                                      k=1;
                              }
                              if(y==2 && nr<=2)
                              {
                                      ++x;
                                      --i;
                                      k=1;
                              }
                              if(y==1 && nr>2)
                              {
                                      nr=0;
                                      printf("-1\n");
                              }
                              if(y==2 && nr>2)
                              {
                                      nr=0;
                                      printf("-1\n");
                              }
                              if(y==0)
                              {
                                      nr=0;
                                      printf("-1\n");
                              }
                     }
    }
    return 0;
}