Pagini recente » Cod sursa (job #2721040) | Cod sursa (job #664253) | Cod sursa (job #1571883) | Cod sursa (job #695225) | Cod sursa (job #1329554)
#include <stdio.h>
#include <stdlib.h>
int v[100002];
int main()
{
int x,a,b,i,n;
long long s,m,d;
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",&x);
v[0]=2147483647;
for(i=0; i<x; i++){
scanf("%d%d",&a,&b);
s=1;
d=n+1;
while(abs(d-s)>1){
m=(s+d)/2;
if(b<v[m])
d=m;
else
s=m;
}
switch(a){
case 0:{
while(v[s]==b)
s++;
if(v[s-1]==b)
printf("%lld\n",s-1);
else
printf("%lld\n",s-1-s);
break;
}
case 1:{
while(v[d]>=b)
d--;
while(v[d+1]==b)
d++;
printf("%lld\n",d);
break;
}
case 2:{
while(v[s]<=b)
s++;
while(v[s-1]==b)
s--;
printf("%lld\n",s);
break;
}
}
}
return 0;
}