Pagini recente » Cod sursa (job #773874) | Cod sursa (job #32493) | Cod sursa (job #1125799) | Cod sursa (job #2809150) | Cod sursa (job #490436)
Cod sursa(job #490436)
#include<cstdio>
using namespace std;
int v[100009],n;
int caut0(int x)
{
int i,pas=(1<<16);
for(i=0;pas!=0;pas>>=1)
if(i+pas<=n &&v[i+pas]<=x)
i+=pas;
if(v[i]!=x)
return -1;
return i;
}
int caut1(int x)
{
int i,pas=(1<<16);
for(i=0;pas!=0;pas>>=1)
if(i+pas<=n &&v[i+pas]<=x)
i+=pas;
return i;
}
int caut2(int x)
{
int i,pas=(1<<16);
for(i=0;pas!=0;pas>>=1)
if(i+pas<=n &&v[i+pas]<x)
i+=pas;
return 1+i;
}
int main()
{
int m, i, x, y;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
if(x==0)
printf("%d \n", caut0(y));
if(x==1)
printf("%d \n", caut1(y));
if(x==2)
printf("%d \n", caut2(y));
}
return 0;
}