Pagini recente » Cod sursa (job #1668258) | Cod sursa (job #615539) | Cod sursa (job #1143458) | Cod sursa (job #2162566) | Cod sursa (job #2757963)
#include <iostream>
#include <fstream>
int table[100001][17], n,m;
int logaritm[100001];
std::ifstream f("rmq.in");
std::ofstream g("rmq.out");
int main()
{
f >> n >> m;
for (int i = 1; i <= n; ++i)
f >> table[i][0];
logaritm[1] = 0;
for (int i = 2; i <= n; ++i)
logaritm[i] = 1 + logaritm[i / 2];
for (int j = 1; j <= logaritm[n]; ++j)
for (int i = 1; i + (1 << j) - 1 <= n; ++i)
table[i][j] = std::min(table[i][j - 1], table[i + (1 << (j - 1))][j - 1]);
int x, y, len;
for (int i = 0; i < m; ++i)
{
f >> x >> y;
len = logaritm[y - x + 1];
g << std::min(table[x][len], table[y - (1 << len) + 1][len]) << '\n';
}
}