Pagini recente » Cod sursa (job #695633) | Cod sursa (job #8272) | Cod sursa (job #1072035) | Cod sursa (job #1598805) | Cod sursa (job #234616)
Cod sursa(job #234616)
#include <stdio.h>
#include <stdlib.h>
#define Nmax 100001
int N,v[Nmax];
int BS(int x)
{ int i,j,m;
i=1; j=N;
while (i<=j) {
m=i+(j-i)/2;
if (v[m]==x) return m;
else if (v[m]<x) i=m+1;
else j=m-1;
}
return -1;
}
int BS1(int x)
{ int i,j,m,poz=0;
i=1; j=N;
while (i<=j) {
m=i+(j-i)/2;
if (v[m]<=x) {
poz=m; i=m+1;
}
else j=m-1;
}
return poz;
}
int BS2(int x)
{ int i,j,m,poz=N+1;
i=1; j=N;
while (i<=j) {
m=i+(j-i)/2;
if (v[m]>=x) {
poz=m; j=m-1;
}
else i=m+1;
}
return poz;
}
int main()
{
int i,m,x,tip;
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",&tip,&x);
if (tip==0) printf("%d\n",BS(x));
else if (tip==1) printf("%d\n",BS1(x));
else printf("%d\n",BS2(x));
}
return 0;
}