Pagini recente » Borderou de evaluare (job #1556985) | Borderou de evaluare (job #3204304) | Borderou de evaluare (job #1175992) | Borderou de evaluare (job #2021079) | Cod sursa (job #2501287)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n, q;
int v[100005];
int rmq[100005][20];
int main()
{
in >> n >> q;
for (int i = 1; i <= n; i++)
{
in >> v[i];
rmq[i][0] = v[i];
}
for (int l = 1; l < 20; l++)
for (int i = 1; i <= n - (1 << (l - 1)); i++)
rmq[i][l] = min(rmq[i][l - 1], rmq[i + (1 << (l - 1))][l - 1]);
while (q--)
{
int x, y;
in >> x >> y;
int l = log2(y - x + 1);
out << min(rmq[x][l], rmq[y - (1 << l) + 1][l]) << '\n';
}
}