Pagini recente » Cod sursa (job #1456775) | Cod sursa (job #253520) | Cod sursa (job #1546146) | Cod sursa (job #2845244) | Cod sursa (job #2417438)
#include <iostream>
#include <fstream>
using namespace std;
#define FILE_NAME "cautbin"
ifstream in (FILE_NAME".in");
ofstream out(FILE_NAME".out");
constexpr unsigned MAX_DIM = 100000 + 16;
unsigned Elements[MAX_DIM];
unsigned N, M;
unsigned binarySearch(unsigned X)
{
unsigned Result = 0;
unsigned step = 1<<30;
while(step)
{
if(Result + step <= N && Elements[Result + step] <= X)
Result += step;
step >>= 1;
}
return Result;
}
int main()
{
in >> N;
for(unsigned i = 1; i <= N; ++i)
in >> Elements[i];
in >> M;
while(M--)
{
unsigned code, x;
in >> code >> x;
switch(code)
{
case 0:
{
unsigned poz = binarySearch(x);
if(poz && Elements[poz] == x)
out << poz << '\n';
else
out << "-1\n";
break;
}
case 1:
{
out << binarySearch(x) << '\n';
break;
}
case 2:
{
out << binarySearch(x-1) + 1 << '\n';
break;
}
default:
{
cerr << "Code unrecognized!";
return -1;
}
}
}
return 0;
}