Pagini recente » Cod sursa (job #1490761) | Cod sursa (job #1988259) | Cod sursa (job #953688) | Cod sursa (job #2125062) | Cod sursa (job #3284359)
#include <vector>
#include <fstream>
#include <bitset>
#include <deque>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, a[100004];
int op1(int x)
{
int st = 1, dr = n, mij, sol=-1;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (a[mij] == x)
sol = mij, st = mij + 1;
else if (a[mij] > x)
dr = mij - 1;
else
st = mij + 1;
}
return sol;
}
int op2(int x)
{
int st = 1, dr = n, mij, sol;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (a[mij] <= x)
sol = mij, st = mij + 1;
else
dr = mij - 1;
}
return sol;
}
int op3(int x)
{
int st = 1, dr = n, mij, sol;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (a[mij] >= x)
sol = mij, dr = mij - 1;
else
st = mij + 1;
}
return sol;
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> a[i];
int q;
fin >> q;
while (q--)
{
int op, x;
fin >> op >> x;
if (op == 0)
fout << op1(x)<<"\n";
if (op == 1)
fout << op2(x) << "\n";
if (op == 2)
fout << op3(x) << "\n";
}
return 0;
}