Pagini recente » Cod sursa (job #1901832) | Cod sursa (job #2549299) | Cod sursa (job #895168) | Monitorul de evaluare | Cod sursa (job #2631321)
#include <bits/stdc++.h>
#define endl "\n"
#define ll long long
#define ull unsigned long long
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
#define cin fin
#define cout fout
int n, q;
int rmq[21][100001];
int logaritmi[100001];
void init() {
logaritmi[1] = 0;
for(int i=2; i <= n; i++) {
logaritmi[i] = logaritmi[i / 2] + 1;
}
for(int lungime = 1; (1 << lungime) <=n; lungime++) {
for(int el = 1; el <= n - (1 << (lungime - 1)); el++) {
rmq[lungime][el] = min(rmq[lungime - 1][el], rmq[lungime - 1][el + 1 << (lungime - 1)]);
}
}
}
void calculate(int a, int b) {
int interval = b - a + 1;
int lungime = logaritmi[interval];
cout << min(rmq[lungime][a], rmq[lungime][a + interval - (1 << lungime)]) << endl;
}
void solve() {
cin >> n >> q;
for(int i=1; i <=n; i++) {
cin >> rmq[0][i];
}
init();
while(q--) {
int a, b;
cin >> a >> b;
calculate(a, b);
}
}
int main() {
ios_base::sync_with_stdio(0);
cin .tie(0);
cout.tie(0);
int testCases = 1;
//cin >> testCases;
while(testCases--) {
solve();
}
}