Pagini recente » Cod sursa (job #822166) | Cod sursa (job #92588) | Cod sursa (job #512049) | Cod sursa (job #1648199) | Cod sursa (job #2917434)
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, M;
int v[100010];
int dp[19][100010];
int logs[100010];
int main()
{
ifstream f("rmq.in");
ofstream g("rmq.out");
f >> N >> M;
logs[0] = 0;
for (int i = 1; i <= N; i++) {
f >> dp[0][i];
logs[i] = 1 + logs[i/2];
}
for (int l = 2, k = 1; l <= N; l *= 2, k++) {
for (int i = 1; i + l - 1 <= N; i++)
dp[k][i] = min(dp[k-1][i], dp[k-1][i + l / 2]);
}
for (int i = 1; i <= M; i++) {
int a, b;
f >> a >> b;
int l = logs[b - a + 1] - 1;
g << min(dp[l][a], dp[l][b - (1 << l) + 1]) << '\n';
}
f.close();
g.close();
return 0;
}