Pagini recente » Cod sursa (job #2585013) | Cod sursa (job #2786699) | Cod sursa (job #1753778) | Cod sursa (job #2819574) | Cod sursa (job #2172409)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define N 100005
#define inf 0x3f3f3f3f
using namespace std;
int n, m, mat[N][20], lg;
void solve()
{
for(int j = 1 ; j <= lg ; ++j)
{
for(int i = 1 ; i + (1 << (j - 1)) <= n; ++i)
{
mat[i][j] = min(mat[i][j - 1] , mat[i + (1 << (j - 1))][j - 1]);
}
}
}
void init()
{
for(int i = 0 ; i <= lg + 1 ; ++i)
{
for(int j = 0 ; j <= lg + 1 ; ++j)
{
mat[i][j] = inf;
}
}
}
void citire()
{
scanf("%d %d\n", &n, &m);
lg = log2(n);
init();
for(int i = 1 ; i <= n ; ++i)
{
scanf("%d\n", &mat[i][0]);
}
solve();
int a, b, d;
for(int i = 1 ; i <= m ; ++i)
{
scanf("%d %d\n", &a, &b);
d = log2(b - a + 1);
printf("%d\n", min(mat[a][d] , mat[b - (1 << d) + 1][d]));
}
}
int main()
{
freopen("rmq.in" , "r" , stdin);
freopen("rmq.out" , "w" , stdout);
citire();
return 0;
}