Pagini recente » Cod sursa (job #2037694) | Cod sursa (job #2401781) | Cod sursa (job #2295639) | Cod sursa (job #1384934) | Cod sursa (job #1468523)
#include<iostream>
#include<math.h>
#include<fstream>
using namespace std;
#define MAX 100001
#define MAXLOG 19
int A[MAX], D[MAX][MAXLOG], N, M, i, j;
ifstream in("rmq.in");
ofstream out("rmq.out");
int main()
{
in >> N >> M;
for (i = 1;i <= N;++i)
in >> A[i],D[i][0] = A[i];
for (j = 1;(1 << j) < N;++j)
for (i = 1;(i + (1 << j) - 1)<=N;++i)
if (D[i][j - 1] <= D[i + (1 << (j-1))][j - 1])
D[i][j] = D[i][j - 1];
else
D[i][j] = D[i + (1 << (j-1))][j - 1];
int a, b,k;
for (i = 1;i <= M;++i)
{
in >> a >> b;
k = (int)log2(b - a + 1);
if (D[a][k] <= D[b - (1 << k) + 1][k])
out << D[a][k] << '\n';
else
out << D[b - (1 << k) + 1][k] << '\n';
}
in.close();
out.close();
return 0;
}