Pagini recente » Cod sursa (job #559749) | Cod sursa (job #1791886) | Cod sursa (job #493015) | Cod sursa (job #886516) | Cod sursa (job #2399472)
#include <fstream>
#define NMAX 100001
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[NMAX], n, i, Q, x, cer;
int caut0(int x)
{
int p = 1, u = n, poz = -1;
while(p <= u)
{
int m = (p + u) / 2;
if(x == v[m])
poz = m;
if(x >= v[m])
p = m + 1;
else
u = m - 1;
}
return poz;
}
int caut1(int x)
{
int p = 1, u = n, poz = -1;
while(p <= u)
{
int m = (p + u) / 2;
if(x >= v[m])
{
p = m + 1;
poz = m;
}
else u = m - 1;
}
return poz;
}
int caut2(int x)
{
int p = 1, u = n, poz = -1;
while(p <= u)
{
int m = (p + u) / 2;
if(v[m] >= x)
{
u = m - 1;
poz = m;
}
else p = m + 1;
}
return poz;
}
int main()
{
f >> n;
for(i = 1; i <= n; i++)
f >> v[i];
f >> Q;
while(Q--)
{
f >> cer >> x;
if(cer == 0)
{
g << caut0(x) << '\n';
}
else if(cer == 1)
{
g << caut1(x) << '\n';
}
else
{
g << caut2(x) << '\n';
}
}
return 0;
}