Pagini recente » Cod sursa (job #3205604) | Cod sursa (job #2590461) | Cod sursa (job #2839037) | Cod sursa (job #709296) | Cod sursa (job #350165)
Cod sursa(job #350165)
#include <stdio.h>
#include <string.h>
#define min(a,b) ((a) < (b) ? (a) : (b))
int T[17][100000],N,M,log2[100001];
int main() {
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i = 2; i <= N; ++i)
log2[i] = log2[i >> 1] + 1;
for(int i = 0 ; i < N; ++i)
scanf("%d",&T[0][i]);
for(int k = 1; (1<<k) <= N ; ++k)
for(int i = 0; i + (1<<k) - 1 < N; ++i)
T[k][i] = min(T[k - 1][i],T[k - 1][i + (1<<(k-1))]);
for(int x,y; M--;) {
scanf("%d%d",&x,&y);
--x,--y;
printf("%d\n",min(T[log2[y - x + 1]][x],T[log2[y - x + 1]][y - (1<<log2[y - x + 1]) + 1]));
}
return 0;
}