Pagini recente » Cod sursa (job #132227) | Cod sursa (job #1162714) | Cod sursa (job #2488326) | Cod sursa (job #2487352) | Cod sursa (job #3226876)
#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)/2;
if (a[mij] <= x)
st = mij+1;
else dr = mij;
}
mij = (st+dr)/2;
if (a[mij] > x) mij--;
g << (a[mij] == x ? mij : -1) << "\n";
}
else if (op == 1)
{
st = 1;
dr = N;
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--;
g << mij << "\n";
}
else if (op == 2)
{
st = 1;
dr = N;
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++;
g << mij << "\n";
}
}
f.close();
g.close();
return 0;
}
/**
1 3 3 3 5
*/