Pagini recente » Cod sursa (job #723890) | Cod sursa (job #1899678) | Cod sursa (job #2610466) | Cod sursa (job #2457281) | Cod sursa (job #2355462)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int NMAX = 100005;
const int LNMAX = (int) log10(NMAX) + 10;
int n, q;
int dp[LNMAX][NMAX];
int main()
{
ios::sync_with_stdio(false);
in >> n >> q;
for(int i=0; i<n; ++i)
in >> dp[0][i];
for(int i=1; (1<<i)<=n; ++i)
for(int j=0; j+(1<<(i-1))<n; ++j)
dp[i][j] = min(dp[i-1][j], dp[i-1][j+(1<<(i-1))]);
for(int i=0; i<q; ++i)
{
int x, y;
in >> x >> y;
--x, --y;
int k =log2(y-x+1);
out<<min(dp[k][x], dp[k][y-(1<<k)+1])<<"\n";
}
return 0;
}