Pagini recente » Cod sursa (job #143218) | Cod sursa (job #1514481) | Cod sursa (job #3177464) | Cod sursa (job #863432) | Cod sursa (job #1021633)
#include<cstdio>
using namespace std;
int n,v[100100];
void bs0(int val)
{
int st=1,dr=n,med,last=-1;
while(st<=dr)
{
med=(st+dr)/2;
if(val==v[med])
{
last=med;
st=med+1;
}
else
if(v[med]<val)
st=med+1;
else
dr=med-1;
}
printf("%d\n",last);
}
void bs1(int val)
{
int st=1,dr=n,med,last=-1;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med]<=val)
{
last=med;
st=med+1;
}
else
dr=med-1;
}
printf("%d\n",last);
}
void bs2(int val)
{
int st=1,dr=n,med,last=-1;
while(st<=dr)
{
med=(st+dr)/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 m,t,x;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d %d",&t,&x);
if(t==0)
bs0(x);
else
if(t==1)
bs1(x);
else
bs2(x);
}
return 0;
}