Pagini recente » Cod sursa (job #1056268) | Cod sursa (job #3284059) | Cod sursa (job #3260752) | Cod sursa (job #2608906) | Cod sursa (job #3288154)
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int NMAX = 100005;
const int LOGMAX = 20;
int rmq[LOGMAX][NMAX];
int lg[NMAX];
int n;
int m;
int main()
{
f >> n >> m;
for(int i = 1;i<= n; i++)
{
f >> rmq[0][i];
}
for (int p = 1; (1 << p) <= n; p++)
{
for (int i = 1; i <= n; i++)
{
rmq[p][i] = min(rmq[p - 1][i], rmq[p - 1][i + (1 << (p - 1))]);
}
}
for(int i = 2;i<= n; i++)
{
lg[i] = lg[i/2] + 1;
}
for (int i = 1; i <= m; i++)
{
int x, y;
f >> x >> y;
int p = lg[y - x + 1];
g << min(rmq[p][x], rmq[p][y - (1 << p) + 1]) << '\n';
}
}