Pagini recente » Cod sursa (job #3032804) | Cod sursa (job #796464) | Cod sursa (job #2573069) | Cod sursa (job #906242) | Cod sursa (job #1139589)
#include <fstream>
using namespace std;
int x, v[1000];
int caut0(int i, int j)
{
int m;
while (i <= j)
{
m = (i+j)/2;
if (x < v[m])
j = m-1;
else
i = m+1;
}
m = (i+j)/2;
if (v[m] > x)
--m;
if (v[m] == x)
return m;
else
return -1;
}
int caut1(int i, int j)
{
int m;
while (i <= j)
{
m = (i+j)/2;
if (x < v[m])
j = m-1;
else
i = m+1;
}
m = (i+j)/2;
if (v[m] > x)
--m;
return m;
}
int caut2(int i, int j)
{
int m;
while (i <= j)
{
m = (i+j)/2;
if (x <= v[m])
j = m-1;
else
i = m+1;
}
m = (i+j)/2;
if (v[m] < x)
++m;
return m;
}
int main()
{int i, n, m, tip;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in >> n;
for (i = 1; i <= n; ++i)
in >> v[i];
in >> m;
while (m--)
{
in >> tip >> x;
if (tip == 0)
out << caut0(1, n) << '\n';
if (tip == 1)
out << caut1(1, n) << '\n';
if (tip == 2)
out << caut2(1, n) << '\n';
}
return 0;
}