Pagini recente » Cod sursa (job #2510427) | Cod sursa (job #570208) | Cod sursa (job #3178827) | Cod sursa (job #2759824) | Cod sursa (job #3276346)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5 + 5;
int rmq[NMAX][20];
ifstream fin("rmq.in");
ofstream fout("rmq.out");
#define cin fin
#define cout fout
int query(int l, int r)
{
int d = (int)log2(r - l + 1);
if (rmq[l][d] <= rmq[r - (1 << d) + 1][d])
{
return rmq[l][d];
}
else
{
return rmq[r - (1 << d) + 1][d];
}
}
int main()
{
int n; cin >> n;
for (int i = 0; i < n; ++ i)
{
cin >> rmq[i][0];
}
for (int j = 1; (1 << j) <= n; ++ j)
{
for (int i = 0; (i + (1 << j) - 1) < n; ++ i)
{
if (rmq[i][j - 1] < rmq[i + (1 << (j - 1))][j - 1])
{
rmq[i][j] = rmq[i][j - 1];
}
else
{
rmq[i][j] = rmq[i + (1 << (j - 1))][j - 1];
}
}
}
int q; cin >> q;
for (int i = 1, a, b; i <= q; ++ i)
{
cin >> a >> b;
cout << query(a, b) << '\n';
}
return 0;
}