Pagini recente » Cod sursa (job #1624635) | Cod sursa (job #319281) | Cod sursa (job #2692857) | Cod sursa (job #1613876) | Cod sursa (job #1730192)
#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;
v[N+1]=2147483647;
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;
}