Pagini recente » Cod sursa (job #677053) | Cod sursa (job #2483039) | Cod sursa (job #1856383) | Cod sursa (job #1492746) | Cod sursa (job #1263166)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100005];
int bs(int st, int dr, int a,int nr)
{
int med,last=-1;
if(nr==0)
{
while(st<=dr)
{
med=(st+dr)>>1;
if(a==v[med])
{
last=med;
st=med+1;
}
else
if(a<v[med])
{
st=med+1;
}
if(a>v[med])
dr=med-1;
}
return last;
}
if(nr==1)
{
while(st<=dr)
{
med=(st+dr)>>1;
if(v[med]<=a)
{
last=med;
st=med+1;
}
else
dr=med-1;
}
return last;
}
if(nr==2)
{
while(st<=dr)
{
med=(st+dr)>>1;
if(v[med]>=a)
{
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
}
int main() {
int n,m,nr,x;
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
sort(v+1,v+n+1);
in>>m;
for(int i=1;i<=m;i++)
{
in>>nr>>x;
out<<bs(1,n,x,nr)<<'\n';
}
return 0;
}