Pagini recente » Cod sursa (job #2430962) | Cod sursa (job #1928330) | Cod sursa (job #3130276) | Cod sursa (job #646631) | Cod sursa (job #2870495)
#include <bits/stdc++.h>
#define N 705
#define MOD 1000000007
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int r[17][100010], n, m, E[100010], st, dr;
void citire() {
fin >> n >> m;
for (int i = 1; i <= n; ++i)
fin >> r[0][i];
}
void RMQ() {
for (int i = 1; (1 << i) <= n; ++i) {
for (int j = 1; j <= n; ++j) {
r[i][j] = r[i - 1][j];
int x = j + (1 << (i - 1));
if (x <= n && r[i][j] > r[i - 1][x])
r[i][j] = r[i - 1][x];
}
}
E[1] = 0;
for (int i = 2; i <= n; ++i)
E[i] = 1 + E[i / 2];
for (int i = 1; i <= m; ++i) {
fin >> st >> dr;
int e = E[dr - st + 1], k = (1 << e);
fout << min(r[e][st], r[e][dr - k + 1]) << "\n";
}
}
int main() {
citire();
RMQ();
return 0;
}