Pagini recente » Cod sursa (job #89641) | Cod sursa (job #2430474) | Cod sursa (job #2983377) | Cod sursa (job #1276723) | Cod sursa (job #3227954)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100001], n;
int element1(int el){
int st, dr, mid, sol;
st=1;
dr=n;
sol=-1;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]<=el){
st=mid+1;
sol=mid;
}
else
dr=mid-1;
}
return sol;
}
int element0(int el){
int x=element1(el);
if(x!=-1 && v[x]==el)
return x;
else
return -1;
}
int element2(int el){
int st, dr, mid, sol;
st=1;
dr=n;
sol=-1;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]<el){
st=mid+1;
}
else{
dr=mid-1;
sol=mid;
}
}
return sol;
}
int main()
{
int i, m, a, b;
cin>>n;
for(i=1; i<=n; i++)
cin>>v[i];
cin>>m;
for(i=1; i<=m; i++){
cin>>a>>b;
if(a==0)
cout<<element0(b)<<endl;
if(a==1)
cout<<element1(b)<<endl;
if(a==2)
cout<<element2(b)<<endl;
}
return 0;
}