Pagini recente » Cod sursa (job #540874) | Cod sursa (job #3032999) | Cod sursa (job #2925736) | Cod sursa (job #669328) | Cod sursa (job #792650)
Cod sursa(job #792650)
#include <iostream>
#include <stdio.h>
using namespace std;
int v[100010];
int main()
{
int n,m,i;
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);
int tip,x;
int min,max,med;
for(i=0;i<m;++i)
{
scanf("%d%d",&tip,&x);
min = 1;
max = n;
med = min + (max-min) >> 1;
while(min < med)
{
if(v[med] <= x)
min = med;
else
max = med;
med = min + (max-min) >> 1;
}
if(tip == 0 || tip == 1)
{
while(v[med+1] == x)
++med;
if(v[med] != x && tip == 0)
printf("0\n");
else
printf("%d\n",med);
}
else
{
while(v[med-1] == x)
--med;
if(v[med] < x)
printf("%d\n",med+1);
else
printf("%d\n",med);
}
}
return 0;
}