Pagini recente » Cod sursa (job #584096) | Cod sursa (job #1895590) | Cod sursa (job #307894) | Cod sursa (job #239450) | Cod sursa (job #2854341)
#include <bits/stdc++.h>
using namespace std;
const int rmqMax = log2(100100);
ifstream in ("rmq.in");
ofstream out ("rmq.out");
int rmq[100100][20];
int a[100100];
int main() {
int n, q;
in >> n >> q;
for (int i = 1; i <= n; i++)
{
in >> a[i];
rmq[i][0] = a[i];
}
for (int i = 1; i <= 20; i++)
{
for (int k = 1; k <= n; k++)
{
rmq[k][i] = min(rmq[k][i-1], rmq[k + (1 << (i - 1))][i-1]);
}
}
while (q--)
{
int s, d;
in >> s >> d;
int j = log2(d - s + 1);
out << min(rmq[s][j], rmq[d - (1 << j) + 1][j]) << '\n';
}
return 0;
}