Pagini recente » Cod sursa (job #881215) | Cod sursa (job #170419) | Cod sursa (job #739519) | Cod sursa (job #2933520) | Cod sursa (job #2684061)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m, stocare[100005], m1, m2, med, ans, st, dr;
int main()
{
fin >> n;
for (int i = 0; i < n; i++)
fin >> stocare[i];
fin >> m;
for (int i = 1; i <= m; i++)
{
fin >> m1 >> m2;
st = 0;
dr = n - 1;
if (m1 == 1)
{
while (st <= dr)
{
med = (st + dr) / 2;
if (stocare[med] <= m2)
{
st = med + 1;
ans = med;
}
else
{
dr = med - 1;
}
}
fout << ans + 1 << "\n";
ans = 0;
}
else if (m1 == 2)
{
while (st <= dr)
{
med = (st + dr) / 2;
if (stocare[med] >= m2)
{
dr = med - 1;
ans = med;
}
else
{
st = med + 1;
}
}
fout << ans + 1 << "\n";
ans = 0;
}
else if (m1 == 0)
{
while (st <= dr)
{
med = (st + dr) / 2;
if (stocare[med] < m2)
{
st = med + 1;
}
else if (stocare[med] > m2)
{
dr = med - 1;
}
else if (stocare[med] == m2)
{
ans = med;
st = med + 1;
}
}
if (ans == 0)
fout << "-1"
<< "\n";
else
fout << ans + 1 << "\n";
ans = 0;
}
}
return 0;
}