Mai intai trebuie sa te autentifici.
Cod sursa(job #455930)
Utilizator | Data | 14 mai 2010 16:18:55 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.53 kb |
#include<stdio.h>
int sol,n,m,v[100005];
int main ()
{
int i,st,dr,tip,val,mij;
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",&tip,&val);
if(!tip)
{
sol=-1;
st=1;dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<val)
st=mij+1;
else
if(v[mij]>val)
dr=mij-1;
else
{
sol=mij;
st=mij+1;
}
}
printf("%d\n",sol);
continue;
}
if(tip==1)
{
st=1;dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<=val)
{
sol=mij;
st=mij+1;
}
else
dr=mij-1;
}
printf("%d\n",sol);
continue;
}
st=1;dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<val)
st=mij+1;
else
{
sol=mij;
dr=mij-1;
}
}
printf("%d\n",sol);
}
return 0;
}