Pagini recente » Cod sursa (job #1695696) | Cod sursa (job #19126) | Cod sursa (job #140759) | Cod sursa (job #1607398) | Cod sursa (job #3195513)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
const int Nmax = 1e5 + 5;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int v[Nmax];
int a[Nmax][20];
int main()
{
int n , m;
fin >> n >> m;
for(int i = 1;i <= n; ++ i){
fin >> v[i];
a[i][0] = v[i];
}
int k = log2(n);
for(int i = 1;i <= k; ++ i){
for(int j = 1; j + (1<<i) - 1 <= n; ++ j){
a[j][i] = min(a[j][i - 1] ,a[j + (1 << i - 1)][i - 1]);
}
}
/*for(int i =0; i <= k; ++ i){
for(int j = 1; j <= n; ++ j){
fout << a[j][i] << " ";
}
fout << '\n';
}*/
for(int i = 1; i <= m; ++ i){
int l,r;
fin >> l >> r;
int log = log2(r - l + 1);
fout << min(a[l][log] , a[r - (1 << log) + 1][log]) << '\n';
}
return 0;
}