Pagini recente » Cod sursa (job #2416235) | Cod sursa (job #3267284) | Cod sursa (job #3003223) | Cod sursa (job #2208858) | Cod sursa (job #745237)
Cod sursa(job #745237)
#include<cstdio>
#define DMAX 100001
using namespace std;
int n,v[DMAX],b;
int cautare1(int a)
{
int s=0,aux=b;
for(;aux;aux>>=1)
if(v[s+aux]<=a&&s+aux<=n)
s+=aux;
return s;
}
int cautare2(int a)
{
int s=0,aux=b;
for(;aux;aux>>=1)
if(v[s+aux]<a&&s+aux<=n)
s+=aux;
return s;
}
void citire()
{
freopen("cautbin.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
for(b=1;b<n;b<<=1);
}
void rezolvare()
{
freopen("cautbin.out","w",stdout);
int m,x,y,aux;
for(scanf("%d",&m);m;--m)
{
scanf("%d%d",&x,&y);
if(!x)
{
aux=cautare1(y);
if(v[aux]==y)
printf("%d",aux);
else
printf("-1");
}
else
if(x==1)
printf("%d",cautare1(y));
else
printf("%d",cautare2(y)+1);
printf("\n");
}
}
int main()
{
citire();
rezolvare();
}