Pagini recente » tema_3 | Cod sursa (job #3287284) | Cod sursa (job #2416661) | Cod sursa (job #315251) | Cod sursa (job #2526955)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int nmax = 100005;
int v[nmax], n, m;
int caut_binar1_0(int x,int op)
{
int m, st, dr, poz = -1;
st = 1, dr = n;
bool ok=0;
while (st <= dr)
{
m = st + (dr - st) / 2;
if (v[m] > x)
dr = m - 1;
else if (v[m] <= x)
{
poz = m, st = m + 1;
if(v[m]==x)ok=1;
}
}
if(op==0)
{
if(ok)
return poz;
else
return -1;
}
return poz;
}
int caut_binar2(int x)
{
int m, st, dr, poz = -1;
st = 1, dr = n;
while (st <= dr)
{
m = st + (dr - st) / 2;
if (v[m] >= x)
dr = m-1, poz = m;
else if (v[m] < x)
st = m + 1;
}
return poz;
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
for (int i = 1; i <= m; i++)
{
int op, x;
fin >> op >> x;
if (op == 0 || op == 1)
{
fout << caut_binar1_0(x,op) << "\n";
}
else
{
fout << caut_binar2(x) << "\n";
}
}
}