Pagini recente » Cod sursa (job #1896509) | Cod sursa (job #1471399) | Cod sursa (job #764938) | Cod sursa (job #627228) | Cod sursa (job #527213)
Cod sursa(job #527213)
#include <cstdio>
#define file_in "rmq.in"
#define file_out "rmq.out"
int N,M;
int a[20][101000];
int l[101000];
int x,y;
int i,j;
inline int min(int a, int b) { return a<b?a:b; }
int main(){
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &N, &M);
for (i=1;i<=N;++i)
scanf("%d", &a[0][i]);
l[1]=0;
for (i=2;i<=N;++i)
l[i]=l[i/2]+1;
for (j=1;(1<<j)<=N;++j)
for (i=1;i+(1<<j)-1<=N;++i)
a[j][i]=min(a[j-1][i],a[j-1][i+(1<<(j-1))]);
while(M--){
scanf("%d %d", &x, &y);
printf("%d\n",min(a[l[y-x+1]][x],a[l[y-x+1]][y-(1<<l[y-x+1])+1]));
}
return 0;
}