Pagini recente » Cod sursa (job #2867891) | Cod sursa (job #1384815) | Istoria paginii runda/tesst/clasament | Cod sursa (job #1291067) | Cod sursa (job #1372752)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100000], n, m, j;
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){
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";
}
else if (q == 1){
j = n;
pas = 1 << 16;
while (pas != 0){
if (j + pas <= n && v[j + pas] < x)
j += pas;
pas /= 2;
}
out << j - 1 << "\n";
}
else if (q == 2){
j = n;
pas = 1 << 16;
while (pas != 0){
if (j - pas >= 0 && v[j - pas] >= x)
j -= pas;
pas /= 2;
}
out << j << "\n";
}
}
return 0;
}