Pagini recente » Cod sursa (job #936378) | Cod sursa (job #3341637) | Cod sursa (job #2706291) | Cod sursa (job #2655475) | Cod sursa (job #2803788)
#include <fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n, m, rmq[17][100001], Log2[100001];
void read()
{
in >> n >> m;
for(int i = 1; i <= n; ++i)
in >> rmq[0][i];
}
void pre()
{
for(int i = 2; i <= n; ++i)
Log2[i] = Log2[i/2] + 1;
for(int i = 1; (1<<i) <= n; ++i)
for(int j = 1; j <= n - (1<<i) + 1; ++j)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j + (1<<(i-1))]);
}
int main()
{
read();
pre();
int x, y, k;
while(m--)
{
in >> x >> y;
k = Log2[y-x+1];
out << min(rmq[k][x], rmq[k][y - (1<<k) + 1]) << '\n';
}
return 0;
}