Pagini recente » Cod sursa (job #3230419) | Cod sursa (job #3361497) | Cod sursa (job #209117) | Cod sursa (job #3357667) | Cod sursa (job #3361379)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
#define NMAX 100001
int n, q;
int rmq[32][NMAX];
int Log2[NMAX];
int main()
{
fin >> n >> q;
Log2[1] = 0;
for (int i = 2; i<=n; i++) {
Log2[i] = Log2[i/2]+1;
}
for (int i = 1; i<=n; i++) {
fin >> rmq[0][i];
}
for (int p = 1; (1<<p)<=n; p++) {
for (int i = 1; i+(1<<p)-1<=n; i++) {
rmq[p][i] = min(rmq[p-1][i], rmq[p-1][i+(1<<(p-1))]);
}
}
while(q--) {
int st, dr;
fin >> st >> dr;
int len = dr-st+1;
int e = Log2[len];
fout << min(rmq[e][st], rmq[e][dr-(1<<e)+1]) << '\n';
}
return 0;
}