Pagini recente » infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #2735619) | Cod sursa (job #2839642) | Cod sursa (job #1935460) | Cod sursa (job #1264160)
#include <cstdio>
using namespace std;
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int n,v[100005],st,dr,mij,i,x,m,op,sol;
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",&op,&x);
if(op==0)
{
st=1;
dr=n;
sol=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(x<v[mij])
dr=mij-1;
if(x>v[mij])
st=mij+1;
if(x==v[mij])
{
sol=mij;
st=mij+1;
}
}
printf("%d\n",sol);
}
if(op==1)
{
sol=-1;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<=x)
{
sol=mij;
st=mij+1;
}
else
dr=mij-1;
}
printf("%d\n",sol);
}
if(op==2)
{
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]>=x)
{
sol=mij;
dr=mij-1;
}
else
st=mij+1;
}
printf("%d\n",sol);
}
}
return 0;
}