Pagini recente » Cod sursa (job #1142015) | Cod sursa (job #250525) | Cod sursa (job #1813984) | Cod sursa (job #2350107) | Cod sursa (job #1096542)
#include <cstdio>
using namespace std;
int n,i,a[100010],m,t,x,pp;
int cb(int x)
{
int st,dr,mij,pos;
st=1; dr=n;
while (st<=dr)
{
mij=(st+dr)/2;
if (a[mij]<x) st=mij+1;
else if (a[mij]>x) dr=mij-1;
else return mij;
}
return dr;
}
int main()
{
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);
if (t==0)
{
pp=cb(x);
if (a[pp]==x)
{
for (;a[pp+1]==x;pp++);
printf("%d\n", pp);
}
else printf("-1\n");
}
else if (t==1)
{
pp=cb(x);
for (;a[pp+1]==x;pp++);
printf("%d\n", pp);
}
else
{
pp=cb(x);
for (;a[pp-1]==x;pp--);
if (a[pp]==x) printf("%d\n", pp);
else printf("%d\n", pp+1);
}
}
return 0;
}