Pagini recente » Cod sursa (job #1230808) | Cod sursa (job #1593253) | Cod sursa (job #2050545) | Cod sursa (job #394883) | Cod sursa (job #1775348)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int a[100001], n, m, i, j, l, delta, df, x, y;
int lg[100001];
int rmq[18][100001];
int main() {
f >> n >> m;
for (i = 1; i <= n; i++)
f >> a[i];
lg[1] = 0;
for (i = 2; i <= n; i++)
lg[i] = lg[i/2] + 1;
for (i = 1; i <= n; i++)
rmq[0][i] = a[i];
for (i = 1; (1 << i) <= n; i++)
for (j = 1; j <= n-(1<<i)+1; j++)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j + (1 << (i-1))]);
while (m) {
f >> x >> y;
delta = y-x+1;
l = lg[delta];
df = delta - (1 << l);
g << min(rmq[l][x], rmq[l][x+df]) << '\n';
m--;
}
return 0;
}