Pagini recente » Cod sursa (job #577723) | Cod sursa (job #2704277) | Cod sursa (job #2319105) | Cod sursa (job #2706551) | Cod sursa (job #3226878)
#include <iostream>
#include <fstream>
#define NMAX 100001
using namespace std;
#ifdef LOCAL
ifstream f("a.in");
ofstream g("a.out");
#else
ifstream f("cautbin.in");
ofstream g("cautbin.out");
#endif // LOCAL
int N, M, a[NMAX], op, x, i;
int st, dr, mij;
int main()
{
f >> N;
for (i = 1; i <= N; i++)
f >> a[i];
f >> M;
for (i = 1; i <= M; i++)
{
f >> op >> x;
if (op == 0)
{
st = 1; dr = N;
while (st < dr)
{
mij = st + (dr-st)/2;
if (a[mij] <= x)
st = mij+1;
else dr = mij-1;
}
mij = st + (dr-st)/2;
if (a[mij] > x) mij--;
if (a[mij] == x) g << mij;
else g << "-1";
g << "\n";
}
else if (op == 1)
{
st = 1;
dr = N;
while (st < dr)
{
mij = st + (dr-st)/2;
if (a[mij] <= x)
st = mij+1;
else dr = mij;
}
mij = st + (dr-st)/2;
if (a[mij] > x) mij--;
g << mij << "\n";
}
else if (op == 2)
{
st = 1;
dr = N;
while (st < dr)
{
mij = st + (dr-st)/2;
if (a[mij] < x)
st = mij+1;
else dr = mij;
}
mij = st + (dr-st)/2;
if (a[mij] < x) mij++;
g << mij << "\n";
}
}
f.close();
g.close();
return 0;
}
/**
1 3 3 3 5
*/