Pagini recente » Cod sursa (job #1432897) | Cod sursa (job #1083793) | Cod sursa (job #1889520) | Cod sursa (job #113269) | Cod sursa (job #1169682)
#include <fstream>
using namespace std;
ifstream is ("rmq.in");
ofstream os ("rmq.out");
int n, Q, x, y;
int RMQ[20][100005];
int main()
{
is >> n >> Q;
for (int i = 1; i <= n; ++i)
is >> RMQ[0][i];
for (int i = 1; (1<<i) <= 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 q = 0, k = 0; q < Q; ++q, k = 0)
{
is >> x >> y;
for (int Z = 1; Z <= (y-x); Z <<= 1, ++k); --k;
os << min( RMQ[k][y-(1<<k)+1], RMQ[k][x] ) << '\n';
}
is.close();
os.close();
}