Pagini recente » Cod sursa (job #1621955) | Cod sursa (job #298899) | Cod sursa (job #739771) | Cod sursa (job #3039983) | Cod sursa (job #2903332)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
std::ifstream fin("rmq.in");
std::ofstream fout("rmq.out");
int N, M, V[100000][20];
void preprocess()
{
for (int j = 1; (1 << j) < N; j++)
for (int i = 0; i + (1 << (j - 1)) < N; i++)
V[i][j] = std::min(V[i][j - 1], V[i + (1 << (j - 1))][j - 1]);
}
int query(int x, int y)
{
int l = floor(log2(y - x + 1));
return std::min(V[x][l], V[y - (1 << l) + 1][l]);
}
int main()
{
fin >> N >> M;
for (int i = 0; i < N; i++)
fin >> V[i][0];
preprocess();
for (int i = 0; i < M; i++)
{
int x, y;
fin >> x >> y;
fout << query(x - 1, y - 1) << '\n';
}
}