Pagini recente » Cod sursa (job #3227002) | Cod sursa (job #3127974) | Cod sursa (job #684295) | Cod sursa (job #992175) | Cod sursa (job #1843079)
#include <stdio.h>
#include <math.h>
#define N 100001
using namespace std;
int i, j, n, q, m, s, k, r, A[N], M[N];
int main()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%d%d", &n, &m);
s = sqrt(n);
for(i = 0; i < n; i++)
{
scanf("%d", &A[i]);
j = i / s;
if(A[i] < A[M[j]] || !(i % s))
M[j] = i;
}
for(q = 0; q < m; q++)
{
scanf("%d %d", &i, &j);
k = i - 1;
r = N;
while(k < j)
{
if(k % s || k + s > j)
{
if(A[k] < r) r = A[k];
k++;
}
else
{
if(A[M[k / s]] < r) r = A[M[k/s]];
k+=s;
}
}
printf("%d\n", r);
}
}