Pagini recente » Cod sursa (job #1845330) | Cod sursa (job #1573293) | Cod sursa (job #960995) | Cod sursa (job #2310499) | Cod sursa (job #2809670)
#include <fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int cautare0 (int n, int nr[], int x)
{
int dr, st, mij, sol;
dr = n;
st = 1;
mij = (dr + st) / 2;
sol = -1;
while (st <= dr)
{
if (x >= nr[mij])
{
if (nr[mij] == x)
sol = mij;
st = mij + 1;
}
else
dr = mij - 1;
mij = (st + dr) / 2;
}
return sol;
}
int cautare1 (int n, int nr[], int x)
{
int dr, st, mij, sol;
dr = n;
st = 1;
mij = (dr + st) / 2;
while (st <= dr)
{
if (x >= nr[mij])
{
sol = mij;
st = mij + 1;
}
else
dr = mij - 1;
mij = (st + dr)/2;
}
return sol;
}
int cautare2 (int n, int nr[], int x)
{
int dr, st, mij, sol;
dr = n;
st = 1;
mij = (dr + st) / 2;
while (st <= dr)
{
if (x > nr[mij])
{
st = mij + 1;
}
else
{
sol = mij;
dr = mij - 1;
}
mij = (st + dr)/2;
}
return sol;
}
int n, nr[100001], m, tip, x, poz0;
int main()
{
f >> n;
for (int i = 1; i <= n; i ++)
{
f >> nr[i];
}
f >> m;
for (int i = 1; i <= m; i ++)
{
f >> tip >> x;
if (tip == 0)
g << cautare0 (n, nr, x) << '\n';
if (tip == 1)
g << cautare1 (n, nr, x) << '\n';
if (tip == 2)
g << cautare2 (n, nr, x) <<'\n';
}
return 0;
}