Pagini recente » Cod sursa (job #561146) | Istoria paginii utilizator/zamolxis666 | Cod sursa (job #173392) | Cod sursa (job #1994005) | Cod sursa (job #1021628)
#include<cstdio>
using namespace std;
int v[100100];
int bs0(int val,int n)
{
int st,dr;
st=1;dr=n;
int med,last=-1;
while(st<=dr)
{
med=st+(dr-st)/2;
if(val==v[med])
{
last=med;
st=med+1;
}
if(val<v[med])
dr=med-1;
else
st=med+1;
}
printf("%d\n",last);
}
int bs1(int val,int n)
{
int st,dr;
st=1;dr=n;
int med,last=-1;
while(st<=dr)
{
med=st+(dr-st)/2;
if(v[med]<=val)
{
last=med;
st=med+1;
}
else
dr=med-1;
}
printf("%d\n",last);
}
int bs2(int val,int n)
{
int st,dr;
st=1;dr=n;
int med,last=-1;
while(st<=dr)
{
med=st+(dr-st)/2;
if(v[med]>=val)
{
last=med;
dr=med-1;
}
else
st=med+1;
}
printf("%d\n",last);
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int n,m,st,dr,t,x;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
scanf("%d",&m);
st=1;dr=n;
for(int i=1;i<=m;i++)
{
st=1;dr=n;
scanf("%d %d",&t,&x);
if(t==0)
bs0(x,n);
else
if(t==1)
bs0(x,n);
else
bs2(x,n);
}
return 0;
}