Pagini recente » Cod sursa (job #3210116) | Cod sursa (job #579212) | Cod sursa (job #2253846) | Cod sursa (job #352421) | Cod sursa (job #798812)
Cod sursa(job #798812)
#include <cstdio>
using namespace std;
int n,m,i,j,tip,a,b;
int v[100001];
int BIN0(int k)
{
int st,dr,med;
st=1; dr=n;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med]==k)
st=med+1;
else
dr=med-1;
}
med=(st+dr)/2;
return med;
}
int BIN1(int k)
{
int st,dr,med;
st=1; dr=n;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med]<=k)
st=med+1;
else
dr=med-1;
}
med=(st+dr)/2;
return med;
}
int BIN2(int k)
{
int st,dr,med;
st=1; dr=n;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med]==k)
dr=med-1;
else
st=med+1;
}
return med;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&tip,&a);
if(tip==0) b=BIN0(a);
if(tip==1) b=BIN1(a);
if(tip==2) b=BIN2(a);
printf("%d\n",b);
}
return 0;
}