Pagini recente » Cod sursa (job #1304242) | Cod sursa (job #219800) | Cod sursa (job #366652) | Cod sursa (job #2383036) | Cod sursa (job #1287448)
#include <cstdio>
using namespace std;
const int NMax = 1e5 + 2;
int n;
int A[NMax];
int Binary(int val)
{
int lo=0, hi=n+1;
while(hi-lo>1)
{
int mid= lo + (hi-lo)/2;
if(A[mid]>val)
hi=mid;
else
lo=mid;
}
return lo;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int i,op,x,m,poz;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&A[i]);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d %d",&op,&x);
if(op == 0)
{
poz=Binary(x);
if(A[poz] == x ) printf("%d\n",poz);
else
printf("-1\n");
}
else if(op == 1)
{
poz=Binary(x);
printf("%d\n",poz);
}
else
{
poz=Binary(x-1);
printf("%d\n",poz+1);
}
}
}