Pagini recente » Cod sursa (job #2364133) | Cod sursa (job #192486) | Cod sursa (job #1164652) | Cod sursa (job #30314) | Cod sursa (job #2404914)
#include <iostream>
#define L 16
using namespace std;
int v[100001];
int n;
int caut0(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
if(v[r]!=x)
return -1;
return r;
}
int caut1(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
return r;
}
int caut2(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<x){
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int main(){
int m;
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
}
cin>>m;
for(int i=0;i<m;i++){
int c;
int x;
cin>>c>>x;
if(c==0){
cout<<caut0(x)<<"\n";
}else if(c==1){
cout<<caut1(x)<<"\n";
}else{
cout<<caut2(x)<<"\n";
}
}
return 0;
}