Pagini recente » Cod sursa (job #1262477) | Cod sursa (job #578561) | Cod sursa (job #1590521) | Cod sursa (job #1941500) | Cod sursa (job #2641647)
#include <fstream>
#include <iostream>
using namespace std;
int v[100001];
int main()
{
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int n, m, i, x, y, min, max;
in >> n;
for (i = 1; i <= n; i++)
{
in >> v[i];
}
for (in >> m; m > 0; m--)
{
in >> x >> y;
min = 0;
max = n + 1;
i = (min + max) / 2;
if (x == 0)
{
while (max - min > 1 && v[min] != y)
{
if (v[i] <= y)
min = i;
else
max = i;
i = (max + min) / 2;
}
if (v[min] != y)
out << -1;
else
{
i = min + 1;
while (i <= n && v[i] == y)
i++;
out << i - 1;
}
}
else if (x == 1)
{
while (max - min > 1 && v[min] <= y)
{
if (v[i] > y) max = i;
else min = i;
i = (max + min) / 2;
}
out << min;
}
else
{
max--;
while (max - min > 1 && v[min] <= y)
{
if (v[i] >= y) max = i;
else min = i;
i = (max + min) / 2;
}
out << max;
}
out << "\n";
}
return 0;
}