Pagini recente » Cod sursa (job #2055758) | Cod sursa (job #2319775) | Cod sursa (job #2319809) | Cod sursa (job #2899789) | Cod sursa (job #2720668)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
long long v[100005];
int n,m,poz;
void binsearch0(long long val, int left, int right){
if(left > right){
return;
}
int mid = left + (right-left)/2;
if(v[mid] == val){
poz = mid;
binsearch0(val,mid+1,right);
}else{
if(val > v[mid]){
binsearch0(val,mid+1,right);
}else{
binsearch0(val,left,mid-1);
}
}
}
void binsearch1(long long val, int left, int right){
if(left > right){
return;
}
int mid = left + (right-left)/2;
if(v[mid] <= val){
poz = mid;
binsearch1(val, mid+1, right);
}else{
binsearch1(val, left, mid-1);
}
}
void binsearch2(long long val, int left, int right){
if(left > right){
return;
}
int mid = left + (right-left)/2;
if(v[mid] >= val){
poz = mid;
binsearch2(val,left,mid-1);
}else{
binsearch2(val,mid+1,right);
}
}
int main(){
int i;
long long a,b;
fin>>n;
for(i = 1; i <= n; i++){
fin>>v[i];
}
fin>>m;
for(i = 1; i <= m; i++){
fin>>a>>b;
if(a == 0){
poz = -1;
binsearch0(b,1,n);
fout<<poz<<'\n';
}else if(a == 1){
poz = 0;
binsearch1(b,1,n);
fout<<poz<<'\n';
}else if(a == 2){
poz = 0;
binsearch2(b,1,n);
fout<<poz<<'\n';
}
}
return 0;
}