Pagini recente » Cod sursa (job #1408191) | Cod sursa (job #1793120) | Cod sursa (job #967465) | Cod sursa (job #2840062) | Cod sursa (job #2782801)
#include <iostream>
using namespace std;
int a[1005],n,k,nr1,nr2;
int CautareBinara0(int x){
int st=1, dr=n, poz=-1;
while (st<=dr){
int mij=(st+dr)/2;
if (x<a[mij]) dr=mij-1;
else{
if (x==a[mij]) poz=mij;
st=mij+1;
}
}
return poz;
}
int CautareBinara1(int x){
int st=1, dr=n, poz=0;
while (st<=dr){
int mij=(st+dr)/2;
if (a[mij]<=x){poz=mij;
st=mij+1;}
else dr=mij-1;
}
return poz;
}
int CautareBinara2(int x){
int st=1, dr=n, poz=0;
while (st<=dr){
int mij=(st+dr)/2;
if (a[mij]>=x){poz=mij;
dr=mij-1;}
else st=mij+1;
}
return poz;
}
int main()
{
cin>>n;
for (int i=1;i<=n;i++)
cin>>a[i];
cin>>k;
while (k){
cin>>nr1>>nr2;
if (nr1==0) cout<<CautareBinara0(nr2);
else if (nr1==1) cout<<CautareBinara1(nr2);
else cout<<CautareBinara2(nr2);
k--;
}
return 0;
}