Pagini recente » Cod sursa (job #1589857) | Cod sursa (job #1545714) | Cod sursa (job #153274) | Cod sursa (job #278469) | Cod sursa (job #1263587)
#include <fstream>
using namespace std;
int binarySearch(int type, int value, int a[], int N);
int main()
{
int N, M, type, value, i;
ifstream f("cautbin.in");
f >> N;
int a[N];
for (i = 0; i < N; i++)
f >> a[i];
f >> M;
ofstream g("cautbin.out");
for (i = 0; i < M; i++)
{
f >> type >> value;
g << binarySearch(type, value, a, N) << '\n';
}
f.close();
g.close();
return 0;
}
int binarySearch(int type, int value, int a[], int N)
{
int pos = -1, step;
step = (1 << 21);
while (step >>= 1)
{
if (pos + step < N && a[pos + step] <= value)
pos += step;
}
if (type == 0 && a[pos] != value)
pos = -2;
else if (type == 2)
{
if (a[pos] == value)
{
while (pos > 0 && a[pos - 1] == value)
pos--;
}
else
{
if (pos != -1)
pos++;
}
}
return ++pos;
}