Pagini recente » Cod sursa (job #2116561) | Cod sursa (job #1854962) | Cod sursa (job #569513) | Cod sursa (job #2222193) | Cod sursa (job #2084486)
#include <bits/stdc++.h>
using namespace std;
const int N_MAX = 100000 + 5;
ifstream fin ("rmq.in");
ofstream fout("rmq.out");
int n, m;
int dp[25][N_MAX];
void rmq(){
for(int level = 1; level <= log2(n); ++level)
for(int j = 1; j<=n; ++j)
dp[level][j] = min(dp[level-1][j], dp[level-1][j + (1 << (level-1))]);
}
int main()
{
fin >> n >> m;
for(int i = 1; i<=n; ++i)
fin >> dp[0][i];
rmq();
while(m--){
int a, b; fin >> a >> b;
int nivel = log2(b-a+1);
fout << min(dp[nivel][a], dp[nivel][b - (1 << nivel) + 1]) << "\n";
}
return 0;
}