Pagini recente » Cod sursa (job #2027568) | Cod sursa (job #1033289) | Cod sursa (job #240774) | Cod sursa (job #465890) | Cod sursa (job #1471509)
#include <iostream>
#include <stdio.h>
#define NMax 100005
using namespace std;
int v[NMax],N,M;
int CB1(int x)
{
int s=0;
int d=N+1;
while(d-s>1)
{
int mij=(s+d)/2;
if(v[mij]>x)
d=mij;
else
s=mij;
}
if(v[s]!=x)
return -1;
return s;
}
int CB2(int x)
{
int s=0;
int d=N+1;
while(d-s>1)
{
int mij=(s+d)/2;
if(v[mij]>x)
d=mij;
else
s=mij;
}
return s;
}
int CB3(int x)
{
int s=0;
int d=N+1;
while(d-s>1)
{
int mij=(s+d)/2;
if(v[mij]>=x)
d=mij;
else
s=mij;
}
return d;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&N);
for(int i=1;i<=N;i++)
scanf("%d",&v[i]);
scanf("%d",&M);
for(int i=1;i<=M;i++)
{
int x,op;
scanf("%d%d",&op,&x);
if(op==0)
printf("%d\n",CB1(x));
else if(op==1)
printf("%d\n",CB2(x));
else if(op==2)
printf("%d\n",CB3(x));
}
}