Pagini recente » Cod sursa (job #891254) | Cod sursa (job #1821923) | Cod sursa (job #2478369) | Cod sursa (job #2807611) | Cod sursa (job #2186796)
#include <fstream>
#define MMAX 100002
using namespace std;
int n,v[MMAX];
ifstream f("cautbin.in");
ofstream o("cautbin.out");
int cautbin(int val)
{
int step,i;
for(step = 1; step < n; step <<= 1);
for(i = 0; step; step >>=1)
if(i+step <= n && v[i+step] <= val)
i += step;
return i;
}
int main()
{
f >> n;
for(int i = 1; i <= n; ++i)
f >> v[i];
int m;
f >> m;
for(int i = 1; i <= m; ++i)
{
int c, x;
f >> c >> x;
int p;
if(c == 0)
{
p = cautbin(x);
if(v[p] == x)
o << p << '\n';
else
o << "-1\n";
}
else if(c == 1)
{
p = cautbin(x);
o << p << '\n';
}
else
{
p = cautbin(x-1);
++p;
o << p << '\n';
}
}
return 0;
}