Pagini recente » Cod sursa (job #1311423) | Cod sursa (job #560707) | Cod sursa (job #3174160) | Cod sursa (job #891408) | Cod sursa (job #1672681)
#include <cstdio>
#include <iostream>
#define DIM 100005
#define DIMlg 17
using namespace std;
int v[DIM];
int log[DIM];
int rmq[DIMlg][DIM];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n, m, i, j, s, t, d, k, q, p, lg;
scanf("%d%d",&n,&m);
for( i = 1; i <= n; ++i ) scanf("%d",&rmq[0][i]);
log[1] = 0;
for( i = 2; i <= n; ++i )
log[i] = log[i/2] + 1;
for( i = 1; (1<<i) <= n; ++i ){
for( j = 1; j + (1<<i) - 1 <= n; ++j ){
k = 1<<(i-1);
rmq[i][j] = min( rmq[i-1][j], rmq[i-1][j+k] );
}
}
for( i = 1; i <= m; ++i ){
scanf("%d%d",&p,&q);
lg = log[q-p+1];
printf("%d\n",min(rmq[lg][p],rmq[lg][q-(1<<lg)+1]));
}
return 0;
}