Pagini recente » Cod sursa (job #366323) | Cod sursa (job #1289962) | Cod sursa (job #1015029) | Cod sursa (job #1595231) | Cod sursa (job #1392168)
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int NMAX = 100010;
int N, M, V[NMAX], RMQ[18][NMAX], X, Y;
int main()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%i %i", &N, &M);
for(int i = 1; i <= N; ++ i) scanf("%i", &V[i]);
for(int i = 1; i <= N; ++ i) RMQ[0][i] = V[i];
for(int i = 1; (1 << i) <= N; ++ i)
for(int j = 1; j <= N; ++ j)
RMQ[i][j] = min(RMQ[i - 1][j], RMQ[i - 1][j + (1 << (i - 1))]);
for(; M; M --)
{
scanf("%i %i", &X, &Y);
int Log = int(log2(Y - X + 1));
printf("%i\n", min(RMQ[Log][X], RMQ[Log][Y - (1 << Log) + 1]));
}
}