Pagini recente » Cod sursa (job #2984613) | Cod sursa (job #3197493) | Cod sursa (job #2032734) | Cod sursa (job #3220610) | Cod sursa (job #1894053)
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
const int nmx = 100002;
int n,q,dp[nmx][18];
void citire()
{
scanf("%d %d", &n, &q);
for(int i = 1; i <= n; ++i)
scanf("%d", &dp[i][0]);
}
void dinamica()
{
for(int pt = 1; 1 << pt <= n; ++pt)
{
for(int i = 1; i <= n - (1<<pt) + 1; ++i)
dp[i][pt] = min(dp[i][pt-1],dp[i+(1<<(pt-1))][pt-1]);
}
}
void teste()
{
for(int i = 1; i <= q; ++i)
{
int a,b;
scanf("%d %d", &a, &b);
int pt = (int) log2(b-a+1);
printf("%d\n", min(dp[a][pt],dp[b-(1<<pt)+1][pt]));
}
}
int main()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
citire();
dinamica();
teste();
return 0;
}