Pagini recente » Cod sursa (job #1449896) | Cod sursa (job #1858310) | Cod sursa (job #1668058) | Cod sursa (job #1942600) | Cod sursa (job #1896931)
#include <fstream>
using namespace std;
int n, m, v[100005];
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int Cerinta_0(int x);
int Cerinta_1(int x);
int Cerinta_2(int x);
int Cerinta_0(int x)
{
int st = 1, dr = n, poz = -1;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (x == v[mij])
{
poz = mij;
}
if (x >= v[mij])
{
st = mij + 1;
}
else
{
dr = mij - 1;
}
}
return poz;
}
int Cerinta_1(int x)
{
int st = 1, dr = n, poz = -1;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (x >= v[mij])
{
st = mij + 1;
poz = mij;
}
else
{
return poz;
}
}
}
int Cerinta_2(int x)
{
int st = 1, dr = n, poz = -1;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (x <= v[mij])
{
dr = mij - 1;
poz = mij;
}
else
{
return poz;
}
}
}
int main()
{
f >> n;
for (int i = 1;i <= n;i++)
f >> v[i];
f >> m;
int val, x;
for (int i = 1;i <= m;i++)
{
f >> val >> x;
switch (val)
{
case 0:
g << Cerinta_0(x);
break;
case 1:
g << "\n" << Cerinta_1(x);
break;
case 2:
g << "\n" << Cerinta_2(x);
break;
}
}
f.close();
g.close();
return 0;
}