Pagini recente » Cod sursa (job #1651505) | Cod sursa (job #2607682) | Cod sursa (job #2209092) | Cod sursa (job #278243) | Cod sursa (job #563118)
Cod sursa(job #563118)
#include <fstream>
using namespace std;
ifstream fi ("rmq.in");
ofstream fo ("rmq.out");
const int DIM = 100005;
const int DIM2 = 18;
int A[DIM], P[DIM][DIM2], D[DIM], N, M;
void prep ()
{
P[1][0] = A[1];
for (int i = 2; i <= N; i++)
{
D[i] = D[i >> 1] + 1;
P[i][0] = A[i];
}
for (int d = 1, i; d <= N; d++)
for (i = 1; i + d <= N; i++)
P[i][d] = min (P[i][d - 1], P[i + d][d - 1]);
}
int main ()
{
fi >> N >> M;
for (int i = 1; i <= N; i++)
fi >> A[i];
prep ();
for (int i = 0, a, b, e; i < M; i++)
{
fi >> a >> b;
e = D[b-a+1];
fo << min (P[a][e], P[b-(1<<e)+1][e]) << '\n';
}
return 0;
}