#include <stdio.h>
#include <stdlib.h>
int cautare0(int *v, int x, int first, int last)
{
if (first == last && x != v[first])
return v[first - 1] == x ? first - 1 : -1;
if (first == last)
return first;
int mid = first + (last - first) >> 2;
if (v[mid] <= x)
return cautare0(v, x, mid + 1, last);
else
return cautare0(v, x, first, mid - 1);
}
int cautare1(int *v, int x, int first, int last)
{
if (first == last && x != v[first] )
{
if (v[first] > x)
return first -1;
else
return first;
}
if (first == last)
return first;
int mid = first + (last - first)>>2;
if (v[mid] <= x)
return cautare1(v, x, mid +1, last);
else
return cautare1(v, x, first, mid - 1);
}
int cautare2(int *v, int x, int first, int last)
{
if (first == last && x != v[first] )
{
if (v[first] < x)
return first + 1;
else
return first;
}
if (first == last)
return first;
int mid = first + (last - first)>>2;
if (v[mid] < x)
return cautare2(v, x, mid + 1, last);
else
return cautare2(v, x, first, mid - 1);
}
int main()
{
int v[1000];
int n,m;
FILE * f = fopen("cautbin.in","r");
fscanf(f, "%i", &n);
int i;
for (i = 0; i < n; i++)
{
fscanf(f, "%i", v + i);
}
fscanf(f, "%i", &m);
int tip, x;
FILE * g = fopen("cautbin.out", "w");
for (i = 0; i < m; i++)
{
fscanf(f, "%i%i", &tip, &x);
/*if (tip == 0)
{ int rez = cautare0(v, x, 0, n-1);
fprintf(g, "%i\n", rez == -1 ? -1 : rez + 1);
}*/
/*if (tip == 1)
fprintf(g, "%i\n", cautare1(v, x, 0, n-1) + 1);*/
if (tip == 2)
{
int rr = cautare2(v, x, 0, n-1);
fprintf(g, "%i\n", rr +1);}
}
fclose(f);
fclose(g);
return 0;
}