Pagini recente » Cod sursa (job #732921) | Cod sursa (job #2664563) | Cod sursa (job #2350779) | Cod sursa (job #1142341) | Cod sursa (job #3209877)
using namespace std;
#include<iostream>
#include<fstream>
#include<algorithm>
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m;
int rmq[20][100001];
int p2[100001];
int main() {
fin >> n >> m;
for (int i = 1; i<=n; i++) {
fin >> rmq[0][i];
}
p2[1] = 0;
for (int i = 2; i<=n; i++) {
p2[i] = p2[i/2]+1;
}
for (int i = 1; (1<<i)<=n; i++) {
for (int j = 1; j<=n-(1<<i)+1; j++) {
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j + (1<<(i-1))]);
}
}
for (int i = 1; i<=m; i++) {
int a, b;
fin >> a >> b;
int l = b-a+1;
fout << min(rmq[p2[l]][a], rmq[p2[l]][b-(1<<p2[l])+1]) << "\n";
}
return 0;
}