Pagini recente » Cod sursa (job #1261041) | Cod sursa (job #141398) | Clasament 23dezile_2 | Cod sursa (job #854004) | Cod sursa (job #1514606)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxN 100002
#define logn 20
using namespace std;
int n, m, i, j, d[logn][maxN], Log[maxN];
void read()
{
freopen("rmq.in", "r", stdin);
scanf("%d %d", &n, &m);
for (i = 1; i <= n; ++ i)
scanf("%d", &d[0][i]);
}
void solve()
{
for (i = 2; i <= n; ++ i)
Log[i] = Log[i / 2] + 1;
for (j = 1; j <= Log[n] ; ++ j)
for (i = 1; i + (1 << (j - 1)) <= n; ++ i)
d[j][i] = min(d[j - 1][i], d[j - 1][i + (1 << (j - 1))]);
}
void write()
{
int sol, x, y, k;
freopen("rmq.out", "w", stdout);
while (m --)
{
scanf("%d %d", &x, &y);
k = Log[y - x + 1];
sol = min(d[k][x], d[k][y - (1 << k) + 1]);
printf("%d\n", sol);
}
}
int main()
{
read();
solve();
write();
return 0;
}