Pagini recente » Cod sursa (job #2501416) | Cod sursa (job #1474419) | Cod sursa (job #1866788) | Cod sursa (job #2333648) | Cod sursa (job #2035251)
#include <fstream>
std::ifstream fin("cautbin.in");
std::ofstream fout("cautbin.out");
int a[100001], n, k, nrOp, val;
int BinarySearch0();
int BinarySearch1();
int BinarySearch2();
int main()
{
fin >> n;
for (int i = 1; i <= n; ++i)
fin >> a[i];
fin >> k;
for (int i = 1; i <= k; ++i)
{
fin >> nrOp >> val;
if (nrOp == 0)
fout << BinarySearch0() << '\n';
if (nrOp == 1)
fout << BinarySearch1() << '\n';
if (nrOp == 2)
fout << BinarySearch2() << '\n';
}
}
int BinarySearch0()
{
int l = 1, r = n, m, poz = -1;
while (l <= r)
{
m = (l + r) / 2;
if (val <= a[m])
l = m + 1;
else
r = m - 1;
if (a[m] == val)
poz = m;
}
return poz;
}
int BinarySearch1()
{
int l = 1, r = n, m, poz;
while (l <= r)
{
m = (l + r) / 2;
if (a[m] <= val)
{
poz = m;
l = m + 1;
}
else
r = m - 1;
}
return poz;
}
int BinarySearch2()
{
int l = 1, r = n, m, poz;
while (l <= r)
{
m = (l + r) / 2;
if (a[m] >= val)
{
poz = m;
r = m - 1;
}
else
l = m + 1;
}
return poz;
}