Pagini recente » Cod sursa (job #300172) | Cod sursa (job #163276) | Cod sursa (job #344493) | Cod sursa (job #586556) | Cod sursa (job #1480155)
// Galatan Tudor - Ion Luca High School
// Vatra Dornei, September 2, 2015
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int x[100010];
int n, i, m, a, b, psn;
int bin_src_1 (int val)
{
int lt = 1, p, med, last = -1;
p = n;
while (lt <= p)
{
med = (lt+p)/2;
if (val >= x[med])
{
last = med;
lt = med+1;
}
else
p = med-1;
}
return last;
}
int bin_src_2 (int val)
{
int lt = 1, p, med, last = -1;
p = n;
while (lt <= p)
{
med = (lt+p)/2;
if (val <= x[med])
{
last = med;
p = med-1;
}
else
lt = med+1;
}
return last;
}
int main()
{
in >> n;
for (i=1; i<=n; i++)
in >> x[i];
in >> m;
for (i=1; i<=m; i++)
{
in >> a >> b;
psn = bin_src_1 (b);
if (a == 0) if (x[psn] == b)
out << psn << "\n";
else
out << -1 << "\n";
else if(a == 1)
out << psn << "\n";
else
out << bin_src_2 (b) << "\n";
}
return 0;
}