Pagini recente » Cod sursa (job #643509) | Cod sursa (job #2618937) | Cod sursa (job #365858) | Cod sursa (job #2569867) | Cod sursa (job #3185058)
#include <iostream>
#include <vector>
#include <climits>
#include<unordered_map>
#include <algorithm>
#include <set>
#include<string>
#include<map>
#include<fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
#define ll long long
int r[17][100005];
int E[100005];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m;
in >> n >> m;
for (int i = 1; i <= n; i++) {
in >> r[0][i];
}
for (int p = 1; (1 << p) <= n; p++) {
for (int i = 1; i+(1<<p)-1 <= n; i++) {
r[p][i] = min(r[p - 1][i], r[p - 1][i + (1 << (p-1))]);
}
}
for (int i = 2; i <= n; i++) {
E[i] = E[i / 2] + 1;
}
while (m--) {
int st, dr;
in >> st >> dr;
int e=e = E[dr - st + 1];
int len = (1 << e);
out << min(r[e][st], r[e][dr - len + 1])<<"\n";
}
}