Pagini recente » Cod sursa (job #1380876) | Cod sursa (job #2743885) | Cod sursa (job #248630) | Cod sursa (job #207783) | Cod sursa (job #1585984)
#include <cstdio>
using namespace std;
int x0( int x, int k );
int x1( int x );
int n, v[100005];
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int m, i, j, k, x;
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",&k,&x);
if( k <= 1 )printf("%d\n",x0(x,k));
else printf("%d\n",x1(x));
}
return 0;
}
int x0( int x, int k ){
int i, pas;
i = 0;
pas = 1 << 16;
while( pas ){
if( i + pas <= n && v[i+pas] <= x ) i += pas;
pas /= 2;
}
if( v[i] == x || k == 1 ) return i;
else return -1;
}
int x1( int x ){
int i, pas;
i = 0;
pas = 1 << 16;
while( pas ){
if( i + pas <= n && v[i+pas] < x ) i += pas;
pas /= 2;
}
return i + 1;
}