Pagini recente » Cod sursa (job #3281062) | Cod sursa (job #71797) | Cod sursa (job #2593362) | Cod sursa (job #206334) | Cod sursa (job #1426694)
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int N, M, tip, x, log_N, lg, i, V[100010];
int main()
{
fin >> N;
for (int i = 1; i <= N; i++) {
fin >> V[i];
}
for (log_N = 1; log_N <= N; log_N <<= 1)
lg >>= 1;
fin >> M;
while (M--)
{
fin >> tip >> x;
if (tip < 2)
{
for (i = 0, lg = log_N; lg; lg >>= 1) {
if (i + lg <= N && V[i + lg] <= x) {
i += lg;
}
}
if (V[i] != x) {
fout << "-1\n";
}
else fout << i << '\n';
}
else
{
for (i = N, lg = log_N; lg; lg >>= 1) {
if (i - lg > 0 && V[i - lg] >= x) {
i -= lg;
}
}
fout << i << '\n';
}
}
fout.close();
return 0;
}