Pagini recente » Cod sursa (job #1111969) | Cod sursa (job #3143767) | Cod sursa (job #119446) | Cod sursa (job #724787) | Cod sursa (job #290303)
Cod sursa(job #290303)
#include <stdio.h>
#define nm 100010
int n, m, i, x, y, t, sol;
int v[nm];
void read()
{
scanf("%d ", &n);
for (i=1; i<=n; ++i)
{
scanf("%d ", &v[i]);
}
scanf("%d ", &m);
}
int bs(int l, int r, int val)
{
int mid = (l + ((r-l)/2));
if (l > r)
return l;
if (v[mid] == val)
return mid;
if (v[mid] < val)
return bs(mid+1, r, val);
else
return bs(l, mid-1, val);
}
void solve()
{
for (i=1; i<=m; ++i)
{
scanf("%d %d", &t, &x);
if (t == 0)
{
y = bs(1, n, x);
sol = -1;
if (v[y] == x)
sol = y;
}
else
if (t == 1)
{
y = bs(1, n, x);
while (v[y] < x)
++y;
sol = --y;
}
else
{
y = bs(1, n, x);
while (v[y] > x)
--y;
sol = ++y;
}
printf("%d\n", sol);
}
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out","w",stdout);
read();
solve();
return 0;
}