Pagini recente » Cod sursa (job #411645) | Cod sursa (job #1348218) | Cod sursa (job #2474360) | Cod sursa (job #1734424) | Cod sursa (job #788781)
Cod sursa(job #788781)
#include <cstdio>
#define Max 100001
int n,a[Max];
int cb0(int x)
{
int l=1,r=n,m;
while(r-l>1)
{
m=(l+r)/2;
if(a[m]<=x)l=m; else r=m-1;
}
return a[r]==x?r:a[l]==x?l:-1;
}
int cb1(int x)
{
int l=1,r=n,m;
while(r-l>1)
{
m=(l+r)/2;
if(a[m]<=x)l=m; else r=m-1;
}
return a[r]<=x?r:l;
}
int cb2(int x)
{
int l=1,r=n,m;
while(r-l>1)
{
m=(l+r)/2;
if(a[m]>=x)r=m; else l=m+1;
}
return a[l]>=x?l:r;
}
int main()
{
int m,c,x;
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
scanf("%d",&m);
while(m--)
{
scanf("%d %d",&c,&x);
switch(c)
{
case 0: printf("%d\n",cb0(x)); break;
case 1: printf("%d\n",cb1(x)); break;
case 2: printf("%d\n",cb2(x)); break;
}
}
return 0;
}