Pagini recente » Cod sursa (job #1567417) | Cod sursa (job #1332806) | Cod sursa (job #1489594) | Cod sursa (job #1500170) | Cod sursa (job #1467114)
#include <cstdio>
int n,m;
int a[100030];
int cautbin(int n,int val)
{
int baza=0,nrr=1;
while(n>nrr) nrr*=2;
for(;nrr!=0;nrr>>=1)
{
int index=baza+nrr;
if(index<=n)
{
if(a[index]<=val)
{
baza=index;
}
}
}
return baza;
}
int main()
{
freopen ("cautbin.in","r",stdin);
freopen ("cautbin.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
scanf("%d",&m);
int tip,x;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&tip,&x);
int pos=cautbin(n,x);
if(tip==0)
{
if(a[pos]==x) printf("%d\n",pos);
else printf("-1\n");
}
else if(tip==1)
{
printf("%d\n",pos);
}
else
{
if(a[pos]!=x) printf("%d\n",pos+1);
else
{
int pt=pos;
while(a[pt-1]==x) pt--;
printf("%d\n",pt);
}
}
}
}