Pagini recente » Cod sursa (job #1702999) | Cod sursa (job #2358040) | Cod sursa (job #2686021) | Cod sursa (job #1454229) | Cod sursa (job #268977)
Cod sursa(job #268977)
#include<stdio.h>
#define MAX 100002
#define logMAX 20
int n,m,S[MAX][logMAX];
int main(){
freopen("rmq.in","rt",stdin);
freopen("rmq.out","wt",stdout);
scanf("%d%d",&n,&m);
int i,j,x,y,w,k,r;
for(i=1;i<=n;i++) scanf("%d",&S[i][0]);
for(j = 1 ; (1<<j) - 1 < n; j++){
for(i=1;i<=n;i++){
S[i][j] = S[i][j-1];
if(i+(1<<(j-1))<=n)
if(S[i + (1<<(j-1))][j-1] < S[i][j-1]) S[i][j] = S[i + (1<<(j-1))][j-1];
}
}
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
w = y - x + 1;k=0;
while(w){k++;w>>=1;}k--;
r = S[x][k];
if(S[y - (1<<k)+1][k] < S[x][k]) r = S[y - (1<<k)+1][k];
printf("%d\n",r);
}
return 0;
}