Pagini recente » Cod sursa (job #2888926) | Cod sursa (job #2296358) | Cod sursa (job #1021922) | Cod sursa (job #949021) | Cod sursa (job #1025423)
#include <stdio.h>
int a[100],n;
int cautare0(int st, int dr, int x)
{
int mij;
while (st <= dr)
{
mij = (st + dr)/2;
if (a[mij] <= x)
st = mij + 1;
else
dr = mij - 1;
}
mij = (st + dr)/2;
if (a[mij] == x)
return mij;
return -1;
}
int cautare1(int st, int dr, int x)
{
int mij;
while (st <= dr)
{
mij = (st + dr)/2;
if (a[mij] <= x)
st = mij + 1;
else
dr = mij - 1;
}
mij = (st + dr)/2;
return mij;
}
int cautare2(int st, int dr, int x)
{
int mij;
while (st < dr)
{
mij = (st + dr)/2;
if (a[mij] < x)
st = mij + 1;
else
dr = mij - 1;
}
mij = (st + dr)/2;
if (a[mij] == x)
return mij;
return mij-1;
}
int main()
{
freopen ("cautbin.out","w",stdout);
freopen ("cautbin.in","r",stdin);
scanf ("%d",&n);
for (int i = 0 ; i < n ; ++i)
scanf ("%d ",&a[i]);
int nri;
scanf("%d",&nri);
for (int i = 0 ; i < nri ; ++i)
{
int in,x;
scanf("%d %d\n",&in,&x);
if (in == 0)
printf("%d\n",cautare0(0,n-1,x));
if (in == 1)
printf("%d\n",cautare1(0,n-1,x));
if (in == 2)
printf("%d\n",cautare2(0,n-1,x));
}
return 0;
}