Pagini recente » Cod sursa (job #2050816) | Cod sursa (job #1624688) | Cod sursa (job #1739211) | Cod sursa (job #2035012) | Cod sursa (job #1155148)
#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 = 0; 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 == 1)
f2(cit);
else
f3(cit);
}
}
void f1(int x){
b = 0;
p = 1 << 10;
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 + 1 << "\n";
}
void f2(int x){
b = 0;
p = 1 << 10;
while (p != 0){
if (b + p<n&&v[b + p] <= x)
b += p;
p /= 2;
}
out << b + 1 << "\n";
}
void f3(int x){
if (v[0] >= x){
out << 1 << "\n";
return;
}
b = p = 1 << 10;
while (p != 0){
if (b - p>0 && v[b - p] >= x || b - p>n)
b -= p;
p /= 2;
}
out << b + 1 << "\n";
}