Pagini recente » Cod sursa (job #1795624) | Cod sursa (job #2734591) | Cod sursa (job #824004) | Cod sursa (job #1946180) | Cod sursa (job #1367130)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N, M, x, y, dif, l, lg[100010], V[20][100010];
int main()
{
f >> N >> M;
lg[0] = -1;
for (int j = 1; j <= N; j++)
{
f>> V[0][j];
lg[j] = lg[j / 2] + 1;
}
for (int i = 1; (1 << i) <= N; i++)
{
for (int j = 1; j <= N - (1 << i) + 1; j++)
{
int l = (1 << (i - 1));
V[i][j] = min(V[i-1][j], V[i-1][j+l]);
}
}
for (int i = 1; i <= M; i++)
{
f >> x >> y;
dif = y - x + 1;
l = lg[dif];
g << min(V[l][x], V[l][y-(1 << l)+1]) << '\n';
}
g.close();return 0;
}