Cod sursa(job #774957)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 6 august 2012 20:47:50
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<stdio.h>
using namespace std;
int n,m,i,v[100001],c,e,rez,begin,end;

int comanda0(int ee)
{begin=1; end=n;
int mij;
while(begin<end)
{mij=begin+(end-begin)/2;
 if(v[mij]<=ee)
    begin=mij+1;
 else 
    end=mij-1;
}
if(v[mij]==ee)
return mij;   
else
return (mij-1); 
}

int comanda2(int ee)
{begin=1; end=n;
int mij;
while(begin<end)
{mij=begin+(end-begin)/2;
 if(v[mij]<ee)
    begin=mij+1;
 else 
    end=mij-1;
}
if(v[mij]==ee)
return mij;   
else
return (mij+1); 
}

int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; i++)
  scanf("%d",&v[i]);
scanf("%d",&m);  
for(i=1; i<=m; i++)
 {scanf("%d %d",&c,&e);  
  if(c==0)
     {rez=comanda0(e);
      if(v[rez]==e)
      printf("%d\n",rez);
      else
      printf("-1\n");}
  if(c==1)
     {rez=comanda0(e);  
      printf("%d\n",rez);}  
  if(c==2)
     {rez=comanda2(e);  
      printf("%d\n",rez);}          
  }
return 0;}