Pagini recente » Cod sursa (job #1652307) | Cod sursa (job #2783988) | Cod sursa (job #64356) | Cod sursa (job #1161934) | Cod sursa (job #2986939)
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
const int L = 106;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, a[N][L];
int main()
{
fin>>n>>m;
for (int i = 1; i <= n; i++)
fin>>a[0][i];
for (int i = 1, p = 2; p <= n; i++, p *= 2)
for (int j = 1; j <= n - p / 2; j++)
a[i][j] = min(a[i - 1][j], a[i - 1][j + p/2]);
for (int i = 1; i <= m; i++)
{
int l, r;
fin>>l>>r;
int len = r - l + 1;
int k = 31 - __builtin_clz(len);
fout<<min(a[k][l], a[k][r - (1<<k) + 1])<<"\n";
}
return 0;
}