Pagini recente » Cod sursa (job #142389) | Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1314076)
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[NMAX];
int main()
{
int n;
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
int m;
int pmax;
int pas;
for (pmax = 1; pmax <= n; pmax <<= 1);
fin >> m;
int tip, x,i;
for (int j = 1; j <= m; j++)
{
fin >> tip >> x;
if (tip == 0)
{
for (pas = pmax, i = 0; pas; pas >>= 1)
{
if (i + pas <= n && v[i + pas] <= x)
i += pas;
}
if (v[i] != x)
fout << -1 << '\n';
else
fout << i << '\n';
}
if (tip == 1)
{
for (pas = pmax, i = 0; pas; pas >>= 1)
{
if (i + pas <= n && v[i + pas] <= x)
i += pas;
}
fout << i << '\n';
}
if (tip == 2)
{
for (pas = pmax, i = n; pas; pas >>= 1)
{
if (i - pas > 0 && v[i - pas] >= x)
i -= pas;
}
fout << i << '\n';
}
}
}