Pagini recente » Cod sursa (job #2110751) | Cod sursa (job #807725) | Cod sursa (job #2907754) | Cod sursa (job #2400539) | Cod sursa (job #1215964)
#include<fstream>
using namespace std;
const int NMAX = 100010;
int N,M,x,op,i,A[NMAX];
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int C0(int l, int r, int x);
int C1(int l, int r, int x);
int C2(int l, int r, int x);
int main()
{
cin>>N;
for (i=1;i<=N;i++) cin>>A[i];
cin>>M;
while (M--)
{
cin>>op>>x;
if (op==0) cout<<C0(1,N,x);
if (op==1) cout<<C1(1,N,x);
if (op==2) cout<<C2(1,N,x);
cout<<"\n";
}
return 0;
}
int C0(int l, int r, int x)
{
int sol=-1;
if (l>r) return sol;
while (l<=r)
{
int m=(l+r)/2;
if (A[m]==x)
{
sol=m;
l=m+1;
} else
if (A[m]>x)
r=m-1;
else
l=m+1;
}
return sol;
}
int C1(int l, int r,int x)
{
int sol=-1;
while (l<=r)
{
int m=(l+r)/2;
if (A[m]<=x)
{
sol=m;
l=m+1;
} else
r=m-1;
}
return sol;
}
int C2(int l, int r, int x)
{
int sol=-1;
while (l<=r)
{
int m=(l+r)/2;
if (A[m]>=x)
{
sol=m;
r=m-1;
} else
l=m+1;
}
return sol;
}