Pagini recente » Cod sursa (job #182) | Cod sursa (job #3281152) | Cod sursa (job #1119449) | preONI 2007 | Cod sursa (job #1413565)
#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; step <=N; step <<= 1);
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(j + i <= N && V[j + i] <= A)
j += i;
V[j] == A ? printf("%d\n", j) : printf("-1\n");
continue ;
}
if(tip == 1) {
for(int i = step; i; i >>= 1)
if(j + i <= N && V[j + i] <= A)
j += i;
printf("%d\n", j);
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;
}