Pagini recente » Cod sursa (job #2083132) | Cod sursa (job #2956246) | Cod sursa (job #2127239) | Cod sursa (job #2107024) | Cod sursa (job #873353)
Cod sursa(job #873353)
#include <fstream>
using namespace std;
const int N = 100001;
int v[N], n;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int bs(int v[], int x){
int i = 0;
for (int step = 1 << 16 ; step ; step >>= 1)
if (i + step <= n && v[i + step] <= x)
i += step;
return i;
}
int op0(int x){
int ans = bs(v, x);
return v[ans] == x ? ans : -1;
}
int op1(int x){
return bs(v, x);
}
int op2(int x){
return bs(v, x - 1) + 1;
}
int main(){
int m, t, x;
in >> n;
for (int i = 1 ; i <= n ; i++)
in >> v[i];
in >> m;
while (m--){
in >> t >> x;
if (t == 0)
out << op0(x) << "\n";
if (t == 1)
out << op1(x) << "\n";
if (t == 2)
out << op2(x) << "\n";
}
return 0;
}