Pagini recente » Cod sursa (job #2729547) | Cod sursa (job #2158160) | Cod sursa (job #2466318) | Cod sursa (job #2435086) | Cod sursa (job #2903415)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, i, j, st, dr, lg2[100001], mat[20][100001], x, y;
int main()
{
f>>n>>m;
for(i=1; i<=n; i++)
f>>mat[0][i];
lg2[1] = 0;
for(i=2; i<=n; i++)
lg2[i] = lg2[i/2] + 1;
for (i=1; (1<<i) <=n;i++)
for (j=1;j+ (1 << i) -1 <=n; j++)
mat[i][j] = min(mat[i-1][j], mat[i-1][j + (1<<(i-1))]);
for(i=0; i<m ;i++)
{
f>>x>>y;
int itv = y-x+1;
int k = lg2[itv];
g<< min(mat[k][x], mat[k][y - (1<<k)+1]) <<'\n';
}
return 0;
}