Pagini recente » Cod sursa (job #2925668) | Cod sursa (job #379888) | Cod sursa (job #1763093) | Cod sursa (job #3143188) | Cod sursa (job #1413562)
#include<bits/stdc++.h>
#define Nmax 100005
using namespace std;
int N, M, V[Nmax], step;
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &N);
for(int i = 1; i <= N; ++ i)
scanf("%d", &V[i]);
for(step = 1; (1 << step) <=N; ++ step);
scanf("%d", &M);
for( ; M; -- M) {
int tip, A, j = 0;
scanf("%d %d", &tip, &A);
if(tip == 0) {
for(int i = step; i; i >>= 1)
if(V[j + i] <= A && j + i <= N)
j += i;
V[j] == A ? printf("%d\n", j) : printf("-1\n");
continue ;
}
if(tip == 1) {
for(int i = step; i; i >>= 1)
if(V[j + i] <= A && j + i <= N)
j += i;
printf("%d\n", A);
continue ;
}
if(tip == 2) {
j = N;
for(int i = step; i; i >>= 1)
if(V[j - i] >= A && j - i > 0)
j -= i;
printf("%d\n", j);
continue ;
}
}
return 0;
}