Pagini recente » Cod sursa (job #1126320) | Cod sursa (job #2201815) | Cod sursa (job #744797) | Cod sursa (job #930049) | Cod sursa (job #1463320)
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define inf 100002
#define Rmax 318
using namespace std;
int n, i, j, m, x, y, q, r, w[Rmax], X, Y, v[inf];
int main()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%d %d", &n, &q);
r = sqrt(n);
for (i = 0; i <= r; ++ i)
w[i] = inf;
for (i = 0; i < n; ++ i)
{
scanf("%d", &v[i]);
w[i / r] = min(w[i / r], v[i]);
}
while (q -- )
{
scanf("%d %d", &x, &y);
-- x;
-- y;
int vmin = inf;
int b = (x / r) + 1, e = y / r;
if (b > e)
{
for (i = x; i <= y; ++ i)
vmin = min(vmin, v[i]);
printf("%d\n", vmin);
continue;
}
for (i = b; i <= e; ++ i)
vmin = min(vmin, w[i]);
for (i = x; i < b * r; ++ i)
vmin = min(vmin, v[i]);
for (i = e * r + 1; i <= y; ++ i)
vmin = min(vmin, v[i]);
printf("%d\n", vmin);
}
return 0;
}