Pagini recente » Cod sursa (job #453071) | Cod sursa (job #1815049) | Cod sursa (job #2623786) | Cod sursa (job #963136) | Cod sursa (job #1900659)
#include <bits/stdc++.h>
using namespace std;
const int LOGMAX = int(log2(100005.0)), NMAX = 100005;
int n,Q,rmq[LOGMAX + 5][NMAX];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d\n", &n, &Q);
for (int i = 1; i<=n; ++i)
scanf("%d", &rmq[0][i]);
int logg = int(log2(1.0 * n));
for (int j = 1; j<=logg; ++j)
for (int i = 1; i <= n - (1 << (j-1)); ++i)
rmq[j][i] = min(rmq[j - 1][i] , rmq[j - 1][i + (1 << (j - 1))]);
for ( ; Q; --Q)
{
int left, right;
scanf("%d %d\n", &left, &right);
int loggg = int(log2(1.0 * (right - left + 1)));
printf("%d\n", min(rmq[loggg][left] , rmq[loggg][right - (1 << loggg) + 1]));
}
return 0;
}