Pagini recente » Cod sursa (job #2398043) | Cod sursa (job #2956592) | Monitorul de evaluare | Cod sursa (job #1902956) | Cod sursa (job #1250169)
#include <cstdio>
using namespace std;
int n,v[100005];
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int m,t,a,i;
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",&t,&a);
int st=1,dr=n,mij,s0=-1,s1=0,s2=100001;
if(t==0)
{
while(st<=dr)
{
mij=(dr-st)/2+st;
if(a<v[mij])
dr=mij-1;
else
{
if(a==v[mij] and ((s0!=-1 and s0<mij) or s0==-1))
s0=mij;
st=mij+1;
}
}
printf("%d\n",s0);
}
if(t==1)
{
while(st<=dr)
{
mij=(dr-st)/2+st;
if(a<v[mij])
dr=mij-1;
else
{
if(s1<mij)
s1=mij;
st=mij+1;
}
}
printf("%d\n",s1);
}
if(t==2)
{
while(st<=dr)
{
mij=(dr-st)/2+st;
if(a<=v[mij])
{
if(s2>mij)
s2=mij;
dr=mij-1;
}
else
st=mij+1;
}
printf("%d\n",s2);
}
}
return 0;
}