Pagini recente » Cod sursa (job #870476) | Cod sursa (job #2923815) | Cod sursa (job #445317) | Cod sursa (job #1177826) | Cod sursa (job #1730188)
#include <fstream>
using namespace std;
ifstream cin ("cautbin.in");
ofstream cout ("cautbin.out");
int v[100005];
int N;
int rasp0(int x){
int st=1,dr=N+1;
int ans=-1;
while(st<=dr){
int med=(st+dr)/2;
if(x==v[med]){
ans=med;
st=med+1;
}
else if(x<v[med]) dr=med-1;
else st=med+1;
}
return ans;
}
int rasp1(int x){
int st=1,dr=N+1;
int ans=-1;
while(st<=dr){
int med=(st+dr)/2;
if(x>=v[med]){
ans=med;
st=med+1;
}
else dr=med-1;
}
return ans;
}
int rasp2(int x){
int st=1,dr=N+1;
int ans=-1;
while(st<=dr){
int med=(st+dr)/2;
if(x<=v[med]){
ans=med;
dr=med-1;
}
else st=med+1;
}
return ans;
}
int main()
{
int M,a,b;
cin>>N;
for(int i=1;i<=N;i++){
cin>>v[i];
}
cin>>M;
for(int i=1;i<=M;i++){
cin>>a>>b;
if(a==0) cout<<rasp0(b)<<'\n';
if(a==1) cout<<rasp1(b)<<'\n';
if(a==2) cout<<rasp2(b)<<'\n';
}
return 0;
}