Pagini recente » Cod sursa (job #2372767) | Cod sursa (job #1591873) | Cod sursa (job #939508) | Cod sursa (job #2368406) | Cod sursa (job #2699446)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, m;
f >> n;
int *v = new int[n];
for (int i = 0; i < n; i++)
f >> v[i];
f >> m;
for (int i = 1; i <= m; i++)
{
int t;
f >> t;
switch (t)
{
case 0:
{
int li = 0, lf = n - 1, m = (li + lf) / 2, x;
f >> x;
while (li <= lf)
{
if (v[m] <= x)
li = m + 1;
else
lf = m - 1;
m = (li + lf) / 2;
}
// cout << li << ' ' << lf;
if (v[lf] == x)
g << lf + 1 << '\n';
else
g << -1 << '\n';
break;
}
case 1:
{
int li = 0, lf = n - 1, m = (li + lf) / 2, x;
f >> x;
while (li <= lf)
{
if (v[m] <= x)
li = m + 1;
else
lf = m - 1;
m = (li + lf) / 2;
}
// cout << li << ' ' << lf;
// if (v[lf] <= x)
g << lf + 1 << '\n';
// else
// g << -1 << '\n';
break;
}
case 2:
{
int li = 0, lf = n - 1, m = (li + lf) / 2, x;
f >> x;
while (li <= lf)
{
if (v[m] >= x)
lf = m - 1;
else
li = m + 1;
m = (li + lf) / 2;
}
// cout << li << ' ' << lf;
// if (v[lf] <= x)
g << li + 1 << '\n';
// else
// g << -1 << '\n';
break;
}
}
}
}