Pagini recente » Cod sursa (job #1739197) | Cod sursa (job #2821578) | Cod sursa (job #1767191) | Cod sursa (job #41781) | Cod sursa (job #2625719)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
long long RMQ [20][100002];
int main () {
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; ++i)
fin >> RMQ[0][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;
}