Pagini recente » Cod sursa (job #306298) | Cod sursa (job #95947) | Cod sursa (job #2127526) | Cod sursa (job #2282707) | Cod sursa (job #1117332)
#include<cstdio>
#include<iostream>
using namespace std;
#define NMAX 100001
#define KMAX 20
int N , M , R[NMAX][KMAX] , v[NMAX] , log[NMAX];
int main()
{
int x , y;
freopen("rmq.in" , "r" , stdin );
scanf("%d%d" , &N , &M );
for(int i = 1 ; i <= N ; ++i )
scanf("%d" , &v[i]);
for(int i = 1 ; i<= N ; ++i )
R[i][0] = v[i];
for(int k = 1 ; (1<<k) <= N ; ++k )
for(int i = 1 ; i+ (1<<k)-1 <= N ; ++i )
R[i][k] = min(R[i][k-1],R[i+(1<<(k-1))][k-1]);
for(int i = 2 ; i <= N ; ++i )
log[i] = log[i/2]+1;
freopen("rmq.out" , "w" , stdout );
for(int i = 1 ; i<= M ; ++i )
{
scanf("%d%d" , &x , &y );
int k = log[y-x+1];
printf("%d\n", min(R[x][k],R[y-(1<<k)+1][k]));
}
return 0;
}