Pagini recente » Cod sursa (job #1990784) | Cod sursa (job #1992617)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001];
int main(){
int n;
f >> n;
for(int i = 0; i < n; i++){
f >> v[i];
}
int m;
f >> m;
for(int i = 0, a, b; i < m; i++){
f >> a >> b;
int step = 1;
for(;step <= n; step <<= 1);
int best = 0;
for(; step > 0; step >>= 1){
if(best + step < n && v[best + step] <= b){
best += step;
}
}
if(a == 0){
if(v[best] == b) g << best + 1;
else g << "-1";
g << "\n";
}
if(a == 1){
g << best + 1 << "\n";
}
if(a == 2){
step = 1;
for(;step <= n; step <<= 1);
best = n-1;
for(; step > 0; step >>= 1){
if(best - step > 0 && v[best - step] >= b){
best -= step;
}
}
g << best + 1 << "\n";
}
}
return 0;
}