Pagini recente » Cod sursa (job #1568506) | Cod sursa (job #539994) | Cod sursa (job #582203) | Cod sursa (job #2086108) | Cod sursa (job #2246264)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("rmq.in");
ofstream fo("rmq.out");
int rmq[100000][17], lg2[100001];
int main()
{
int n, q, x, y;
fi >> n >> q;
for(int i = 0; i < n; i++)
fi >> rmq[i][0];
for(int i = 2; i < n; i++)
lg2[i] = lg2[i / 2] + 1;
for(int i = 0; i < n; i++)
for(int j = 1; (1 << j) <= i + 1; j++)
rmq[i][j] = min(rmq[i][j - 1], rmq[i - (1 << (j - 1))][j - 1]);
for(int i = 0; i < q; i++){
fi >> x >> y;
x--; y--;
fo << min(rmq[y][lg2[y - x + 1]], rmq[x - 1 + (1 << lg2[y - x + 1])][lg2[y - x + 1]]) << '\n';
}
fi.close();
fo.close();
return 0;
}