Pagini recente » Cod sursa (job #2987478) | Cod sursa (job #1560276) | Cod sursa (job #2486986) | Cod sursa (job #730483) | Cod sursa (job #1220402)
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <fstream>
using namespace std;
#define inf 0xfffffff
#define MOD 1999999973
int n, m, rmq[100001][17];
int main() {
int k, x, y;
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%d", &rmq[i][0]);
}
for (int j = 1; (1 << j) <= n; j++) {
for (int i = 1; i + (1 << j) - 1 <= n; i++) {
rmq[i][j] = min(rmq[i][j-1], rmq[i + (1 << (j-1))][j-1]);
}
}
for (int i = 1; i <= m; i++) {
scanf("%d %d", &x, &y);
k = (int)(log(y-x+1)/log(2));
printf("%d\n", min(rmq[x][k], rmq[y-(1<<k)+1][k]));
}
//for (int i = 1; i <= n; i++, printf("\n"))
//for (int j = 0; j <= 10; j++) printf("%d ", rmq[i][j]);
return 0;
}