Pagini recente » Cod sursa (job #202376) | Cod sursa (job #3348032) | Cod sursa (job #3327765) | Cod sursa (job #704881) | Cod sursa (job #3328173)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int NMAX = 1e5;
int dp[NMAX+5][20], lg[NMAX+5];
int main()
{
int n, m, x, y, result, t;
fin >> n >> m;
for(int i = 1; i <= n; ++i)
lg[i] = lg[i/2] + 1;
for(int i = 1; i <= n; ++i)
fin >> dp[i][0];
for(int k = 1, power = 2; power <= n; power<<=1, k++)
for(int i = 1; i + power - 1 <= n; ++i)
dp[i][k] = min(dp[i][k-1], dp[i + power/2][k-1]);
for(int i = 1; i <= m; ++i)
{
fin >> x >> y;
t = lg[y - x + 1] - 1;
result = min(dp[x][t], dp[y + 1 - (1 << t)][t]);
fout << result << "\n";
}
return 0;
}