Pagini recente » Cod sursa (job #135276) | Cod sursa (job #2206034) | Cod sursa (job #1095165) | Cod sursa (job #3256926) | Cod sursa (job #1169685)
#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;
if (x == y) os << RMQ[0][x] << '\n';
else
{
for (int Z = 1; Z <= (y-x); Z *= 2, ++k); --k;
os << min (RMQ[k][y-(1<<k)+1], RMQ[k][x]) << '\n';
}
}
is.close();
os.close();
}