Pagini recente » Cod sursa (job #2430889) | Rating Popa Maria Catalina (Popa_Maria_Catalina_321CC) | Cod sursa (job #2782811)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, x, a[100005], c, m;
int cautbinar_0 (int x)
{
int st = 1, dr = n, poz = -1;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (x < a[mij])
dr = mij - 1;
else
{
if (x == a[mij])
poz = mij;
st = mij + 1;
}
}
return poz;
}
int cautbinar_1 (int x)
{
int st = 1;
int dr = n;
int poz = -1;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (a [mij] <= x)
{
poz = mij;
st = mij + 1;
}
else
dr = mij - 1;
}
if (a[poz] <= x)
return poz;
}
int cautbinar_2 (int x)
{
int st = 1, dr = n, poz = 0;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (a[mij] >= x)
{
poz = mij;
dr = mij - 1;
}
else st = mij + 1;
}
return poz;
}
int main()
{
f >> n;
for (int i = 1; i <= n; i ++)
{
f >> a [i];
}
f >> m;
for (int i = 1; i <= m; i ++ )
{
f >> c;
f >> x;
switch (c)
{
case 0:
g << cautbinar_0(x);
g << '\n';
break;
case 1:
g << cautbinar_1(x);
g << '\n';
break;
case 2:
g << cautbinar_2(x);
g << '\n';
break;
}
}
return 0;
}