Pagini recente » Cod sursa (job #2542950) | Cod sursa (job #1089723) | Cod sursa (job #933694) | Cod sursa (job #628653) | Cod sursa (job #2196561)
#include <iostream>
#include <cstdio>
using namespace std;
const int NMAX=100000;
int n,v[NMAX+5],L=16;
int caut1(int x)
{
int r,pas;
r=0;
pas=1<<L;
while(pas!=0)
{
if(r+pas <= n && v[r+pas] <= x)
r+=pas;
pas=pas/2;
}
return r;
}
int caut2(int x)
{
int r,pas;
r=0;
pas=1<<L;
while(pas!=0)
{
if(r+pas<=n&&v[r+pas]<x)
r+=pas;
pas=pas/2;
}
r++;
return r;
}
int caut0(int x)
{
int r,pas;
r=0;
pas=1<<L;
while(pas!=0)
{
if(r+pas <= n && v[r+pas] <= x)
r+=pas;
pas=pas/2;
}
if (r == 0 || v[r] < x)
{
r = -1;
}
return r;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d", &n);
int i;
for(i=1;i<=n;i++)
scanf("%d", &v[i]);
int m,cerinta,x;
scanf("%d", &m);
for(i=1;i<=m;i++)
{
scanf("%d%d", &cerinta,&x);
if(cerinta==0)
printf("%d\n", caut0(x));
if(cerinta==1)
printf("%d\n", caut1(x));
if(cerinta==2)
printf("%d\n", caut2(x));
}
}