Pagini recente » Cod sursa (job #2741802) | Cod sursa (job #3273098) | Cod sursa (job #2830105) | Cod sursa (job #3209577) | Cod sursa (job #1850782)
#include <iostream>
#include <fstream>
using namespace std;
int bS(int v[], int s, int e){
int m, r=s+1, l=0;
while(r-l>1){
m=l+(r-l)/2;
if(v[m]<=e)l=m;
else r=m;
}
if(l>0&&l<=s&&v[l]==e)return l;
return -1;
}
int bS2(int v[], int s, int e){
int m, r=s+1, l=0;
while(r-l>1){
m=l+(r-l)/2;
if(v[m]<=e)l=m;
else r=m;
}
if(l>0&&l<=s&&v[l]<=e)return l;
return -1;
}
int bS3(int v[], int s, int e){
int m, r=s+1, l=0;
while(r-l>1){
m=l+(r-l)/2;
if(v[m]>=e)r=m;
else l=m;
}
if(r>0&&r<=s&&v[r]>=e)return r;
return -1;
}
int a[100005], n, m, q, x;
int main(){
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in>>n;
for(int i=1; i<=n; i++)in>>a[i];
in>>m;
for(int i=1; i<=m; i++){
in>>q>>x;
if(q==0){
out<<bS(a, n, x)<<"\n";
}else if(q==1){
out<<bS2(a, n, x)<<"\n";
}else{
out<<bS3(a, n, x)<<"\n";
}
}
return 0;
}