Pagini recente » Cod sursa (job #3163540) | Cod sursa (job #814618) | Cod sursa (job #2830621) | Cod sursa (job #1663666) | Cod sursa (job #1266648)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int lg[100001], rmq[20][100001];
int main()
{
int n, m, x, y, l, i, j;
f >> n >> m;
lg[1] = 0;
for(i = 2; i<=n; i++)
lg[i] = lg[i/2] + 1;
for(i = 1; i<=n; i++)
f >> rmq[0][i];
for(i = 1; (1<<i)<= n; i++)
for(j = 1; j<= n -(1<<i) + 1; j++)
{
l = 1<<(i-1);
rmq[i][j] = min(rmq[i -1][j], rmq[i -1][j + 1]);
}
for(i = 1; i<=m; i++)
{
f >> x >> y;
int dif = y - x + 1;
l = lg[dif];
int sh = dif - (1<<l);
g << min(rmq[l][x], rmq[l][x + sh]) << '\n';
}
}