Pagini recente » Cod sursa (job #1485384) | Cod sursa (job #480992) | Cod sursa (job #2498461) | Cod sursa (job #2053734) | Cod sursa (job #3134261)
#include <iostream>
#include <fstream>
using namespace std;
int v[1000001][20];
int main()
{
ifstream in("rmq.in");
ofstream out("rmq.out");
int n, m, x1 = 2, x2 = 1, x3, x4, x5;
in >> n >> m;
for (int i = 1; i <= n; i++)
in >> v[i][0];
while (x1 <= n) {
for (int i = 1; i <= n; i++)
v[i][x2] = min(v[i][x2 - 1], v[i + x1 / 2][x2 - 1]);
x2++;
x1 *= 2;
}
for (int i = 1; i <= m; i++) {
in >> x3 >> x4;
x1 = 1;
x5 = 0;
do {
x1 = x1 * 2;
x5++;
} while (x1 * 2 <= x4 - x3 + 1);
out << min(v[x3][x5], v[x4 - x1 + 1][x5]) << "\n";
}
return 0;
}