Pagini recente » Cod sursa (job #2210571) | Cod sursa (job #2486067) | Cod sursa (job #2138425) | Cod sursa (job #888666) | Cod sursa (job #2021274)
#include <bits/stdc++.h>
using namespace std;
int v[100005];
int cauta (int x, int n)
{
int i, best = 0;
for (i = 0; (1<<i) <= n; ++i);
for (; i >= 0; --i)
if (best + (1<<i) <= n && v[best + (1<<i)] <= x)
best += (1<<i);
return best;
}
int main(int argc, char const *argv[])
{
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
// ifstream fin ("input");
// ofstream fout ("output");
int n, m;
fin >> n;
for (int i = 1; i<=n; ++i)
fin >> v[i];
fin >> m;
for (int i = 1; i<=m; ++i)
{
int type, x;
fin >> type >> x;
cout << cauta(x, n) << " il caut pe " << x << '\n';
if (type == 0)
{
if (v[cauta(x, n)] == x)
fout << cauta(x, n) << '\n';
else fout << "-1\n";
}
if (type == 1)
{
fout << cauta(x, n) << '\n';
}
if (type == 2)
{
fout << cauta(x-1, n)+1 << '\n';
}
}
return 0;
}