Pagini recente » Cod sursa (job #2629163) | Cod sursa (job #2419893) | Cod sursa (job #2872204) | Cod sursa (job #811775) | Cod sursa (job #2625711)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
long long RMQ [20][100002], v[100002];
int main () {
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; ++i)
fin >> v[i];
for (int i = 1; i <= n; ++i)
RMQ[0][i] = v[i];
for (int i = 1; (1 << i) <= n; ++i)
for(int j = 1; j <= n - (1 << i) + 1 ; ++ j)
if (RMQ[i-1][j] < RMQ[i-1][j + (1<< (i-1))])
RMQ[i][j] = RMQ[i-1][j];
else
RMQ[i][j] = RMQ[i-1][j + (1<< (i-1))];
for (int i = 1; i <= m; ++i) {
int x, y, k;
fin >> x >> y;
k = y - x + 1;
int log = 0;
while(k > 1) {
k = k/2;
log++;
}
k = y - x + 1;
int rez;
rez = min(RMQ[log][x], RMQ[log][x + k - (1<<log)]);
fout << rez << '\n';
}
return 0;
}