Pagini recente » Cod sursa (job #2667247) | Cod sursa (job #3283312) | Cod sursa (job #1251491) | Cod sursa (job #515512) | Cod sursa (job #1648372)
#include <fstream>
#include <algorithm>
#define NMAX 100007
#define LMAX 19
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int Dp[LMAX][NMAX], Lg[NMAX];
int n, m;
int main(){
cin >> n >> m;
for(int i = 1; i <= n; ++i)
cin >> Dp[0][i];
Lg[1] = 0;
for(int i = 2; i <= n; ++i)
Lg[i] = Lg[i / 2] + 1;
for(int i = 1; (1 << i) <= n; ++i)
for(int j = 1; j <= n - (1 << i) + 1; ++j)
Dp[i][j] = min(Dp[i - 1][j], Dp[i - 1][j + (1 << (i - 1))]);
for(int i = 1; i <= m; ++i){
int A, B;
cin >> A >> B;
int Number = Lg[B - A + 1];
int X = B - A + 1 - (1 << Number);
cout << min(Dp[Number][A], Dp[Number][A + X]) << "\n";
}
return 0;
}