Pagini recente » Cod sursa (job #2912764) | Cod sursa (job #1506957) | Cod sursa (job #2410969) | Cod sursa (job #2000124) | Cod sursa (job #2277927)
#include<fstream>
#define N 100000
#define P 17
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[N + 2];
int binary_search(int n, int x, int strict){
int p = (1 << P);
int ans = 0;
while(p > 0){
if (ans + p <= n && v[ans + p] + strict <= x) ans += p;
p /= 2;
}
return ans;
}
int main(){
int n;
cin>>n;
for(int i = 1; i <= n; i++)
cin>>v[i];
int q;
cin>>q;
for(int i = 1; i <= q; i++){
int a, b;
cin>>a>>b;
if (a == 2)
cout<<binary_search(n, b, 1) + 1<<'\n';
else
if (a == 1)
cout<<binary_search(n, b, 0)<<'\n';
else
if (a == 0){
a = binary_search(n, b, 0);
if (v[a] != b) a = -1;
cout<<a<<'\n';
}
}
return 0;
}