Pagini recente » Cod sursa (job #1451685) | Cod sursa (job #1715485) | Cod sursa (job #2255673) | Cod sursa (job #2571746) | Cod sursa (job #1290097)
#include <cstdio>
using namespace std;
const int NMax = 1e5 + 2;
int n;
int A[NMax];
int Binary(int val)
{
int poz=0, pas=(1<<17); // log2 of NMax
while(pas>>=1)
{
if( (pas+poz<=n) && A[pas+poz]<=val)
poz+=pas;
}
return poz;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int i,op,x,m,poz;
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",&op,&x);
if(op == 0)
{
poz=Binary(x);
if(A[poz] == x ) printf("%d\n",poz);
else
printf("-1\n");
}
else if(op == 1)
{
poz=Binary(x);
printf("%d\n",poz);
}
else
{
poz=Binary(x-1);
printf("%d\n",poz+1);
}
}
}