Pagini recente » Cod sursa (job #2788909) | Cod sursa (job #1650542) | Cod sursa (job #1380991) | Cod sursa (job #264570) | Cod sursa (job #1961221)
#include <fstream>
#include <cmath>
#include <iostream>
#define MAXN 100002
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int val, nr, n, m, st, dr;
int a[25][MAXN];
inline void Read()
{
fin >> n >> m;
for (int i = 1; i <= n; i++)
{
fin >> nr;
a[0][i] = nr;
}
}
inline void rmq_constructie_matrice()
{
val = 1; int nn = log2(n);
for (int i = 1; i <= nn; i++)
{
for (int j = 1; j <= n; j++)
{
a[i][j] = min(a[i - 1][j], a[i - 1][j + val]);
}
val *= 2;
}
}
inline void rmq_interogare()
{
for (int i = 1; i <= m; i++)
{
fin >> st >> dr;
nr = log2(dr - st + 1);
val = pow(2, dr - st - 1);
fout << min(a[nr][st], a[nr][dr - val + 1]) << "\n";
}
}
int main ()
{
Read();
rmq_constructie_matrice();
rmq_interogare();
fin.close(); fout.close(); return 0;
}