Pagini recente » Cod sursa (job #1587489) | Cod sursa (job #2486954) | Cod sursa (job #525628) | Cod sursa (job #2207619) | Cod sursa (job #2720535)
#include <fstream>
#include <cmath>
#define MIN(a, b) (((a)>(b))?(b):(a))
const int N = 1e5 + 5;
std::ifstream fin("rmq.in");
std::ofstream fout("rmq.out");
int rmq[20][N];
int query(int l, int r) {
int sz = (int)log2(r-l+1);
return MIN(rmq[sz][l], rmq[sz][r-(1<<sz)+1]);
}
int main() {
int n, m, left, right;
fin>>n>>m;
for(int i=0;i<n;i++) fin>>rmq[0][i];
for(int i=1;i<20;i++)
for(int j=0;j<n-(1<<i)+1;j++)
rmq[i][j] = MIN(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
while(m--) {
fin>>left>>right;
fout<<query(left-1, right-1)<<'\n';
}
}