Pagini recente » Cod sursa (job #1288283) | Cod sursa (job #1723496) | Cod sursa (job #1141109) | Cod sursa (job #661248) | Cod sursa (job #3319104)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n, m, tip, x;
int v[100002], log2[100002];
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
}
for(int i=1;i<=n;i++){
log2[i]=log2[i/2]+1;
}
if(n!=(1<<log2[n]))
log2[n]--;
cin>>m;
for(int i=1;i<=m;i++){
cin>>tip>>x;
int sol=0;
int exp=log2[n];
if(tip<=1){
for(int bit=exp;bit>=0;bit--){
int aux=sol+(1<<bit);
if(aux<=n && v[aux]<=x)
sol=aux;
}
if(tip==0){
if(v[sol]==x)
cout<<sol<<"\n";
else cout<<-1<<"\n";
}
else cout<<sol<<"\n";
}
else{
for(int bit=exp;bit>=0;bit--){
int aux=sol+(1<<bit);
if(v[aux]<=x-1)
sol=aux;
}
cout<<sol+1<<"\n";
}
}
}