Pagini recente » Cod sursa (job #2204900) | Cod sursa (job #1805426) | Cod sursa (job #1932291) | Cod sursa (job #1389447) | Cod sursa (job #1992621)
#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 = 1; 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;
else g << "-1";
g << "\n";
}
if(a == 1){
g << best << "\n";
}
if(a == 2){
step = 1;
for(;step <= n; step <<= 1);
best = 0;
for(; step > 0; step >>= 1){
if(best + step <= n && v[best + step] < b){
best += step;
}
}
g << best + 1 << "\n";
}
}
return 0;
}