Pagini recente » Cod sursa (job #1192211) | Cod sursa (job #2342180) | Cod sursa (job #1939978) | Cod sursa (job #2711677) | Cod sursa (job #1889513)
#include <cstdio>
using namespace std;
const int nmx = 100002;
int n,v[nmx];
void citire()
{
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
scanf("%d", &v[i]);
}
void cautbin0(int nr)
{
int st = 1, dr = n, pos = -1;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(v[mij] == nr)
{
pos = mij;
}
if(v[mij] <= nr)
st = mij + 1;
else
dr = mij - 1;
}
printf("%d\n", pos);
}
void cautbin1(int nr)
{
int st = 1, dr = n, pos = -1;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(v[mij] <= nr)
{
pos = mij;
}
if(v[mij] <= nr)
st = mij + 1;
else
dr = mij - 1;
}
printf("%d\n", pos);
}
void cautbin2(int nr)
{
int st = 1, dr = n, pos = -1;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(v[mij] >= nr)
{
pos = mij;
}
if(v[mij] >= nr)
dr = mij - 1;
else
st = mij + 1;
}
printf("%d\n", pos);
}
void teste()
{
int nr;
scanf("%d", &nr);
while(nr--)
{
int c,x;
scanf("%d %d", &c, &x);
if(c == 0)
cautbin0(x);
else if(c == 1)
cautbin1(x);
else
cautbin2(x);
}
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
citire();
teste();
return 0;
}