Pagini recente » Cod sursa (job #2227408) | Cod sursa (job #1806395) | Cod sursa (job #606733) | Cod sursa (job #2317344) | Cod sursa (job #498655)
Cod sursa(job #498655)
#include<stdio.h>
int n,i,m,f,x;
int v[100005];
int bs(int val)
{
int st,dr,med,last;
st=1;
dr=n;
last=-1;
while(st<=dr)
{
med=st+(dr-st)/2;
if(v[med]<=val)
{
last=med;
st=med+1;
}
else
dr=med-1;
}
return last;
}
int bs1(int val)
{
int st,dr,med,last;
st=1;
dr=n;
while(st<=dr)
{
med=st+(dr-st)/2;
if(val>=v[med])
{
last=med;
st=med+1;
}
else
dr=med-1;
}
return last;
}
int bs2(int val)
{
int st,dr,med,last;
st=1;
dr=n;
while(st<=dr)
{
med=st+(dr-st)/2;
if(val<=v[med])
{
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
int nr;
for(i=1;i<=n;++i)
{
scanf("%d",&v[i]);
}
scanf("%d",&m);
for(i=1;i<=m;++i)
{
scanf("%d%d",&f,&x);
if(f==0)
{
nr=bs(x);
printf("%d\n",nr);
}
if(f==1)
{
nr=bs1(x);
printf("%d\n",nr);
}
if(f==2)
{
nr=bs2(x);
printf("%d\n",nr);
}
}
}