Pagini recente » Cod sursa (job #3220743) | Cod sursa (job #2191279) | Cod sursa (job #2741884) | Cod sursa (job #842891) | Cod sursa (job #3288775)
#include <bits/stdc++.h>
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
//#define fin cin
//#define fout cout
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int nmax = 100001;
int n,q;
int exponent[nmax];
int rmq[nmax][32];
int main() {
for (int i = 2; i <= n; i++)
exponent[i] = 1 + exponent[i / 2];
fin >> n >> q;
for (int i = 1; i <= n; i++)
fin >> rmq[i][0];
for (int p = 1; (1 << p) <= n; p++) {
for (int i = 1; i <= n; i++) {
int j = i + (1 << (p - 1));
if (j > n)
j = n;
rmq[i][p] = min(rmq[i][p - 1],rmq[j][p - 1]);
}
}
while (q--) {
int st,dr;
fin >> st >> dr;
int e = exponent[dr - st + 1];
fout << min(rmq[st][e],rmq[dr - (1 << e) + 1][e]) << '\n';
}
return 0;
}