Cod sursa(job #3302562)
| Utilizator | Data | 8 iulie 2025 21:44:43 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.64 kb |
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
const int VMAX = 1e5 + 1;
int v[VMAX];
int main()
{
int N, tip, x;
f >> N;
for (int i = 1; i <= N; i++)
{
f >> v[i];
}
int M;
f >> M;
for (int i = 1; i <= M; i++)
{
f >> tip >> x;
if (tip == 0)
{
int st = 1, dr = N + 1;
while (st < dr)
{
int mij = (st + dr) / 2;
if (x + 1 <= v[mij])
dr = mij;
else
st = mij + 1;
}
if (v[st - 1] == x)
{
g << st - 1 << "\n";
}
else
{
g << "-1\n";
}
}
else if (tip == 1)
{
int st = 1, dr = N + 1;
while (st < dr)
{
int mij = (st + dr) / 2;
if (x + 1 <= v[mij])
dr = mij;
else
st = mij + 1;
}
if (v[st - 1] == x)
{
g << st - 1 << "\n";
}
else
{
g << st << "\n";
}
}
else
{
int st = 1, dr = N;
while (st < dr)
{
int mij = (st + dr) / 2;
if (x <= v[mij])
dr = mij;
else
st = mij + 1;
}
g << st << "\n";
}
}
return 0;
}
