Pagini recente » Cod sursa (job #1518129) | Cod sursa (job #1255356) | Cod sursa (job #1828432) | Cod sursa (job #337106) | Cod sursa (job #1026780)
#include <fstream>
using namespace std;
ifstream is("cautbin.in");
ofstream os("cautbin.out");
int a[100002], n;
int m;
int nr, x;
int mij;
int Cautare0(int st, int dr, int x)
{
mij = 0;
while (st <= dr)
{
mij = (st + dr)/2;
if (a[mij] <= x)
st = mij + 1;
else
dr = mij - 1;
}
mij = (st + dr)/2;
if (a[mij] == x)
return mij;
else
return -1;
}
int Cautare1(int st, int dr, int x)
{
mij = 0;
while (st < dr)
{
mij = (st + dr)/2;
if (a[mij] <= x)
st = mij + 1;
else
dr = mij;
}
mij = (st + dr)/2;
if (a[mij] > x)
mij--;
return mij;
}
int Cautare2(int st, int dr, int x)
{
mij = 0;
while (st < dr)
{
mij = (st + dr)/2;
if (a[mij] < x)
st = mij + 1;
else
dr = mij;
}
mij = (st + dr)/2;
if (a[mij] < x)
mij++;
return mij;
}
int main()
{
is >> n;
for (int i = 1 ; i <= n ; ++i)
is >> a[i];
is >> m;
for (int i = 0 ; i < m ; ++i)
{
is >> nr >> x;
if (nr == 0)
os << Cautare0(a[1], a[n], x) << '\n';
if (nr == 1)
os << Cautare1(a[1], a[n], x) << '\n';
if (nr == 2)
os << Cautare2(a[1], a[n], x) << '\n';
}
is.close();
os.close();
return 0;
}