Pagini recente » Cod sursa (job #346236) | Cod sursa (job #297910) | Cod sursa (job #2795287) | Cod sursa (job #986310) | Cod sursa (job #3204728)
#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[n]; ++j )
dp[i][j] = min( dp[i][j - 1], dp[0][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;
}