Pagini recente » Cod sursa (job #2151282) | Cod sursa (job #1790029) | Cod sursa (job #577117) | Cod sursa (job #2911481) | Cod sursa (job #3204730)
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
const int nmax = 100000;
int n, m, v, x, y, dp[100000 + 5][20], log[nmax + 5];
int main()
{
int i, j, l;
log [1] = 0;
cin >> n >> m;
for ( i = 1; i <= n; ++i )
{
cin >> v;
dp[i][0] = v;
}
for ( i = 2; i <= nmax; ++i )
log[i] = log[i / 2] + 1;
for ( i = 1; i <= n; ++i )
for ( j = 1; j <= log[i]; ++j )
dp[i][j] = min( dp[i][j - 1], dp[i - (1 << (j - 1))][j - 1]);
for (i = 1; i <= m; ++i )
{
cin >> x >> y;
l = log[y - x + 1];
int rasp = min(dp[y][l], dp[x + (1 << l) - 1][l]);
cout << rasp << endl;
}
return 0;
}