Pagini recente » Cod sursa (job #248462) | Cod sursa (job #1083700) | Cod sursa (job #1092530) | Cod sursa (job #1333827) | Cod sursa (job #3153230)
#include <stdio.h>
#define NMAX (100000)
#define INF (0x7fffffff)
int n, q, tree[2 * NMAX];
int min(int x, int y)
{
return x <= y ? x : y;
}
int& set_min(int& x, int y)
{
if(y < x) x = y;
return x;
}
int query(int l, int r)
{
int ans = INF;
for(l += n, r += n; l < r; l >>= 1, r >>= 1)
{
if(l & 1) set_min(ans, tree[l++]);
if(r & 1) set_min(ans, tree[--r]);
}
return ans;
}
int main()
{
freopen("rmqsq.in", "r", stdin);
freopen("rmqsq.out", "w", stdout);
scanf("%d %d", &n, &q);
for(int i = 0; i < n; i++)
scanf("%d", &tree[i + n]);
for(int i = n - 1; i >= 1; i--)
tree[i] = min(tree[i << 1], tree[i << 1 | 1]);
for(int i = 0; i < q; i++)
{
int l, r;
scanf("%d %d", &l, &r);
printf("%d\n", query(l - 1, r));
}
return 0;
}