Pagini recente » Cod sursa (job #865525) | Cod sursa (job #1007285) | Cod sursa (job #1676676) | Cod sursa (job #1897617) | Cod sursa (job #1152220)
#include <iostream>
#include <fstream>
using namespace std;
void f1(int x);
void f2(int x);
void f3(int x);
int n, m, v[10000], i, b, cit, q;
long long p;
ofstream out("cautbin.out");
int main(){
ifstream in("cautbin.in");
in >> n;
for (i = 1; i <= n; i++)
in >> v[i];
in >> m;
for (int k = 1; k <= m; k++){
in >> q >> cit;
if (q == 0)
f1(cit);
else if (q == 2)
f2(cit);
else
f3(cit);
}
}
void f1(int x){
b = 0;
p = 1 << 16;
while (p != 0){
if (b + p<n&&v[b + p] <= x)
b += p;
p /= 2;
}
if (v[b]<cit)
out << -1 << "\n";
else
out << b << "\n";
}
void f2(int x){
b = 0;
p = 1 << 16;
while (p != 0){
if (b + p<n&&v[b + p] <= x)
b += p;
p /= 2;
}
out << b << "\n";
}
void f3(int x){
b = p = 1 << 16;
while (p != 0){
if (b - p>=0&&v[b - p] >= x)
b -= p;
p /= 2;
}
out << b << "\n";
}