Pagini recente » Cod sursa (job #312756) | Cod sursa (job #900860) | Cod sursa (job #225130) | Cod sursa (job #363156) | Cod sursa (job #2834886)
#include <fstream>
#define DIM 100001
std::ifstream fin("rmq.in");
std::ofstream fout("rmq.out");
int rmq[17][DIM];
int e[DIM];
int main()
{
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; i++)
fin >> rmq[0][i];
for (int p = 1; (1 << p) <= n; p++)
{
for (int i = 1; i <= n; i++)
{
rmq[p][i] = rmq[p - 1][i];
int j = i + (1 << (p - 1));
if (j <= n && rmq[p][i] > rmq[p - 1][j])
rmq[p][i] = rmq[p - 1][j];
}
}
e[1] = 0;
for (int i = 2; i <= n; i++)
e[i] = 1 + e[i / 2];
for (int i = 1; i <= m; i++)
{
int x, y;
fin >> x >> y;
int len = y - x + 1;
int exp = e[len];
fout << std::min(rmq[exp][x], rmq[exp][y - (1 << exp) + 1]) << '\n';
}
return 0;
}