Pagini recente » Cod sursa (job #480401) | Cod sursa (job #2866860) | Cod sursa (job #910174) | Cod sursa (job #2305632) | Cod sursa (job #2870684)
#include <iostream>
#include <fstream>
using namespace std;
const string filename = "rmq";
ifstream fin(filename + ".in");
ofstream fout(filename + ".out");
int n, q;
int log2[100005], rmq[20][100005];
int main()
{
fin >> n >> q;
for(int i = 1; i <= n; i++)
fin >> rmq[0][i];
for(int i = 2; i <= n; i++)
log2[i] = log2[i / 2] + 1;
for(int j = 1; (1 << j) <= n; j++)
for(int i = 1; i + (1 << (j - 1)) <= n; i++)
rmq[j][i] = min(rmq[j - 1][i], rmq[j - 1][i + (1 << (j - 1))]);
for(int i = 1; i <= q; i++)
{
int x, y, len, log, ans;
fin >> x >> y;
len = x - y + 1;
log = log2[len];
ans = min(rmq[log][x], rmq[log][y - (1 << log) + 1]);
fout << ans << '\n';
}
return 0;
}