Pagini recente » Cod sursa (job #1455637) | Cod sursa (job #1917770) | Cod sursa (job #199462) | Cod sursa (job #2371037) | Cod sursa (job #1372927)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001], n, m;
void caz0 (int x)
{
int j, pas;
j = 0;
pas = 1 << 16;
while (pas != 0)
{
if (j + pas <= n && v[j + pas] <= x)
j += pas;
pas /= 2;
}
if (v[j] == x) out << j << "\n";
else out << "-1 \n";
}
void caz1 (int x)
{
int j, pas;
j = 0;
pas = 1 << 16;
while (pas != 0)
{
if (j + pas <= n && v[j + pas] <= x)
j += pas;
pas /= 2;
}
out << j << "\n";
}
void caz2 (int x)
{
int j, pas;
j = n;
pas = 1 << 16;
while (pas != 0)
{
if (j - pas >= 0 && v[j - pas] >= x)
j -= pas;
pas /= 2;
}
out << j << "\n";
}
int main()
{
in >> n;
for (int i = 1; i <= n; i++) in >> v[i];
in >> m;
int q, x, pas;
for (int i = 1; i <= m; i++)
{
in >> q;
in >> x;
if (q == 0) caz0(x);
else if (q == 1) caz1(x);
else if (q == 2) caz2(x);
}
return 0;
}