Pagini recente » Cod sursa (job #182884) | Cod sursa (job #2580040) | Cod sursa (job #2228845) | Cod sursa (job #2114296) | Cod sursa (job #2811874)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int NMAX = 100000, KMAX = 25;
int rmq[NMAX + 5][KMAX + 1], v[NMAX + 5], log[NMAX + 5];
int main()
{
int n, m, i, j, l, r;
fin >> n >> m;
for(i = 2; i <= NMAX; i++)
log[i] = log[i / 2] + 1;
for(i = 0; i < n; i++)
{
fin >> v[i];
rmq[i][0] = v[i];
}
for(j = 1; j <= KMAX; j++)
for(i = 0; i + (1 << j) <= NMAX; i++)
rmq[i][j] = min(rmq[i][j-1], rmq[i + (1 << (j - 1))][j-1]);
for(i = 1; i <= m; i++)
{
fin >> l >> r;
l--;
r--;
j = log[r - l + 1];
fout << min(rmq[l][j], rmq[r - (1 << j) + 1][j]) << '\n';
}
return 0;
}