Pagini recente » Cod sursa (job #866356) | Cod sursa (job #1726058) | Cod sursa (job #1594254) | Cod sursa (job #119913) | Cod sursa (job #440948)
Cod sursa(job #440948)
#include<stdio.h>
int type,x,n,m,i,T,v[100005];
int binary_search(int val)
{
int j,s;
for(s=1;s<=n;s<<=1);
for(j=0;s;s>>=1)
if(j+s<=n && v[j+s]<=val)
j+=s;
return j;
}
int type1(int val)
{
int c=binary_search(val);
return c;
}
int type2(int val)
{
int c=binary_search(val);
while(v[c]==val)c--;
return c+1;
}
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",&type,&x);
if(type==0)
{
T=binary_search(x);
if(v[T]==x)printf("%d\n",T);
else printf("-1\n");
}
if(type==1)
printf("%d\n",type1(x));
if(type==2)
printf("%d\n",type2(x));
}
return 0;
}