Pagini recente » Cod sursa (job #2202429) | Cod sursa (job #2988796) | Cod sursa (job #2043870) | Cod sursa (job #1162552) | Cod sursa (job #1018332)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("cautbin.in");
ofstream fo("cautbin.out");
long long v[100000],n,m,x;
short q;
long long cb0(long long i,long long j,long long x) {
long long m=(i+j)/2;
if (m==i) {
if (v[m+1]==x)
return m+1;
else
if (v[m]==x)
return m;
else
return -1;
}
else {
if (v[m]<=x)
cb0(m,j,x);
else
cb0(i,m,x);
}
}
long long cb1(long long i,long long j,long long x) {
long long m=(i+j)/2;
if (m==i) {
if (v[m+1]<=x)
return m+1;
else
return m;
}
else {
if (v[m]<=x)
cb1(m,j,x);
else
cb1(i,m,x);
}
}
long long cb2(long long i,long long j,long long x) {
long long m=(i+j)/2;
if (m==i) {
if (v[m]>=x)
return m;
else
return m+1;
}
else {
if (v[m]>=x)
cb2(i,m,x);
else
cb2(m,j,x);
}
}
int main()
{
fi>>n;
for (long long i=1;i<=n;i++)
fi>>v[i];
fi>>m;
for (long long i=1;i<=m;i++) {
fi>>q>>x;
if (q==0)
fo<<cb0(1,n,x)<<'\n';
else
if (q==1)
fo<<cb1(1,n,x)<<'\n';
else
fo<<cb2(1,n,x)<<'\n';
}
return 0;
}