Pagini recente » Cod sursa (job #763157) | Cod sursa (job #2957281) | Cod sursa (job #1231132) | Cod sursa (job #1970792) | Cod sursa (job #1001913)
#include<cstdio>
using namespace std;
int n,m,t,x,a[100005];
int cb(int tip, int val)
{
int i,st=1,dr=n,mij;
switch (tip)
{
case 0:
{
while (st<=dr)
{
mij=(st+dr)/2;
if (a[mij]<=val) st=mij+1;
else dr=mij-1;
}
if (a[st-1]==val) return st-1;
else return -1;
} break;
case 1:
{
while (st+1<dr)
{
mij=(st+dr)/2;
if (a[mij]<=val) st=mij;
else dr=mij-1;
}
if (st+1==dr) return st;
else return 0;
} break;
case 2:
{
while (st<dr)
{
mij=(st+dr)/2;
if (a[mij]>=val) dr=mij;
else st=mij+1;
}
if (st==dr) return st;
else return 0;
} break;
}
}
int main()
{
int i;
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)
{
scanf("%d%d",&t,&x);
printf("%d\n",cb(t,x));
}
return 0;
}