Pagini recente » Cod sursa (job #980337) | Cod sursa (job #2606137) | Cod sursa (job #2932929) | Cod sursa (job #723411) | Cod sursa (job #1667316)
#include <cstdio>
using namespace std;
int a[100000],n;
void citire()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
}
int question0(int x)
{
int st=1,dr=n,mid,poz=-1;
while(dr>st+1)
{
mid=(st+dr)/2;
if(a[mid]>x)
{
dr=mid;
continue;
}
if(a[mid]==x)
poz=mid;
st=mid;
}
return poz;
}
int question1(int x)
{
int st=1,dr=n,mid;
while(dr>st+1)
{
mid=(st+dr)/2;
if(a[mid]>x)
{
dr=mid;
continue;
}
st=mid;
}
return st;
}
int question2(int x)
{
int st=1,dr=n,mid;
while(dr>st+1)
{
mid=(st+dr)/2;
if(a[mid]<x)
{
st=mid;
continue;
}
dr=mid;
}
return dr;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
citire();
int m;
scanf("%d",&m);
for(int w=0;w<m;w++)
{
int q,x,rez;
scanf("%d %d",&q,&x);
switch(q)
{
case 0: rez=question0(x);break;
case 1: rez=question1(x);break;
case 2: rez=question2(x);
}
printf("%d\n",rez);
}
return 0;
}