Pagini recente » Cod sursa (job #456374) | Cod sursa (job #913231) | Cod sursa (job #1525501) | Cod sursa (job #1370794) | Cod sursa (job #2664887)
#include<iostream>
long long int v[100001];
using namespace std;
long long int cautbin0(long long int n , long long int t , long long int v[] , long long int x ){
long long int r=0;
for(long long int i=t;i>0;i/=2){
if(v[r+i]<=x && r+i<=n){
r+=i;
}
}
if(v[r]==x){
return r;
}else{
return -1;
}
}
long long int cautbin1(long long int n , long long int t , long long int v[] , long long int x ){
long long int r=0;
for(long long int i=t;i>0;i/=2){
if(v[r+i]<=x && r+i<=n){
r+=i;
}
}
return r;
}
long long int cautbin2(long long int n , long long int t , long long int v[] , long long int x ){
long long int r=n+1;
for(long long int i=t;i>0;i/=2){
if(v[r-i]>=x && r-i>0){
r-=i;
}
}
return r;
}
int main(){
long long int n,m,x,y,t=1;
cin>>n;
while(t*2<=n){
t*=2;
}
for(long long int i=1;i<=n;i++){
cin>>v[i];
}
cin>>m;
for(long long int i=1;i<=m;i++){
cin>>x>>y;
if(x==0){
cout<<cautbin0(n,t,v,y)<<'\n';
}
if(x==1){
cout<<cautbin1(n,t,v,y)<<'\n';
}
if(x==2){
cout<<cautbin2(n,t,v,y)<<'\n';
}
}
}