Pagini recente » Cod sursa (job #901879) | Cod sursa (job #1244015) | Cod sursa (job #2703539) | Cod sursa (job #865940) | Cod sursa (job #2674938)
#include <cmath>
#include <fstream>
#include <iostream>
using namespace std;
const int NMAX = 1e5;
int a[(int)log2(NMAX) + 5][NMAX + 5];
int main()
{
ifstream in("rmq.in");
ofstream out("rmq.out");
int n, m, x, y, i, j, dist;
in >> n >> m;
for(i = 1; i <= n; ++ i)
in >> a[0][i];
for(i = 1; i <= (int)log2(n); ++ i)
for(j = 1; j <= n - (1 << i) + 1; ++ j)
a[i][j] = min(a[i - 1][j], a[i - 1][j + (1 << (i - 1))]);
/*for(i = 0; i <= (int)log2(n); ++ i)
{
for(j = 1; j <= n - (1 << i) + 1; ++ j)
out << a[i][j] << ' ';
out << '\n';
}
out << '\n';*/
for(i = 1; i <= m; ++ i)
{
in >> x >> y;
dist = y - x + 1;
dist = (int)log2(dist);
out << min(a[dist][x], a[dist][y - (1 << dist) + 1]) << '\n';
}
return 0;
}