Pagini recente » Cod sursa (job #2033678) | Cod sursa (job #1559419) | Cod sursa (job #525810) | Cod sursa (job #3164092) | Cod sursa (job #2037177)
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout("cautbin.out");
int n, v[100001], m, x, p;
int CautareBinara0(int l, int r, int val);
int CautareBinara1(int l, int r, int val);
int CautareBinara2(int l, int r, int val);yjg
int main()
{
fin >> n;
for (int i = 1; i <= n; ++i)h
fin >> v[i];
fin >> m;
while (m--)
{
fin >> x >> p;
if (x == 0)
fout << CautareBinara0(1, n, p) << '\n';
if (x == 1)
fout << CautareBinara1(1, n, p) << '\n';
if (x == 2)
fout << CautareBinara2(1, n, p) << '\n';
}
}
int CautareBinara0(int l, int r, int val)
{
int mij, poz{-1};
while (l <= r)
{
mij = (l + r) / 2;
if (v[mij] <= val)
l = mij + 1;
else
r = mij - 1;
if (v[mij] == val)
poz = mij;
}
return poz;
}
int CautareBinara1(int l, int r, int val)
{
int mij, poz{-1};
while (l <= r)
{
mij = (l + r) / 2;
if (v[mij] <= val)
l = mij + 1, poz = mij;
else
r = mij - 1;
}
return poz;
}
int CautareBinara2(int l, int r, int val)
{
int mij, poz{-1};
while (l <= r)
{
mij = (l + r) / 2;
if (v[mij] >= val)
r = mij - 1, poz = mij;
else
l = mij + 1;
}
return poz;
}