Pagini recente » Cod sursa (job #2816221) | Cod sursa (job #490929) | Cod sursa (job #1808342) | Cod sursa (job #635560) | Cod sursa (job #1680405)
#include <cstdio>
int bin_search(int v[], int n, int value, int mode)
{
int start, end, mid;
start = 0;
end = n - 1;
while (start <= end)
{
mid = (end + start) / 2;
if (value < v[mid])
{
end = mid - 1;
}
else if (value > v[mid])
{
start = mid + 1;
}
else
{
if (mode < 2)
{
while (v[++mid] == value);
mid--;
}
else
{
while (v[--mid] == value);
mid++;
}
return mid;
}
}
if (mode == 1)
{
return end;
}
else if (mode == 2)
{
return start;
}
return -1;
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int n, m, x, act, v[100000];
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &v[i]);
}
scanf("%d", &m);
for (int i = 0; i < m; i++)
{
scanf("%d %d", &act, &x);
int p = bin_search(v, n, x, act);
printf("%d\n", p == -1 ? -1 : p + 1);
}
return 0;
}