Pagini recente » Cod sursa (job #3139049) | Cod sursa (job #64693) | Cod sursa (job #1494044) | Cod sursa (job #655549) | Cod sursa (job #1698806)
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int RMQ[20][100010],p[100010],N, Q;
int main()
{
in >> N >> Q;
for (int i = 1;i <= N;++i)
in >> RMQ[0][i];
for (int i = 2;i <= N;++i)
p[i] = 1 + p[i / 2];
for (int i = 1;i <= p[N];++i)
for (int j = 1;(j + (1 << i) - 1) <= N;++j)
RMQ[i][j] = min(RMQ[i - 1][j], RMQ[i - 1][j + (1<<(i-1))]);
for (int i = 1;i <= Q;++i)
{
int x, y;
in >> x >> y;
out << min(RMQ[p[y - x + 1]][x], RMQ[p[y - x + 1]][y - (1 << p[y - x + 1]) + 1]) << '\n';
}
return 0;
}