Pagini recente » Cod sursa (job #3235235) | Cod sursa (job #1395380) | Cod sursa (job #2913200) | Cod sursa (job #2288007) | Cod sursa (job #2416382)
#include <iostream>
#include <cstdio>
#include <cmath>
#define N 100005
using namespace std;
int dp[20][N];
int n,m;
int rmq(int st, int dr){
int k = log2(dr-st+1);
return min(dp[k][st], dp[k][dr-(1<<k)+1]);
}
int main()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%d%d", &n,&m);
for(int i = 1; i <= n; ++i)
scanf("%d", &dp[0][i]);
for(int i = 1; (1<<i) <= n; ++i)
for(int j = 1; j + (1<<(i-1)) <= n; ++j)
dp[i][j] = min(dp[i-1][j], dp[i-1][j+(1<<(i-1))]);
int st, dr;
for(int i = 0; i < m; ++i){
scanf("%d%d", &st,&dr);
cout<<rmq(st,dr)<<"\n";
}
return 0;
}