Pagini recente » Cod sursa (job #923041) | Cod sursa (job #191833) | Cod sursa (job #2369377) | Cod sursa (job #1398952) | Cod sursa (job #812111)
Cod sursa(job #812111)
#include <fstream>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
using namespace std;
ifstream fi ("rmq.in");
ofstream fo ("rmq.out");
const int dimn = 100002;
int N, M, B[17][dimn], P[dimn];
void cit ()
{
int i, b, p;
fi >> N >> M;
for (i = 1; i <= N; i++)
{
fi >> B[0][i];
if (i > 1)
P[i] = P[i>>1] + 1;
}
for (b = 1; (1<<b) <= N; b++)
{
p = 1 << b;
for (i = 1; i <= N - p + 1; i++)
{
B[b][i] = min (B[b-1][i], B[b-1][i+(p>>1)]);
}
}
}
int main ()
{
int a, b, d;
cit ();
while (M--)
{
fi >> a >> b;
d = b - a + 1;
fo << min (B[P[d]][a], B[P[d]][b-(1<<P[d])+1]) << '\n';
}
return 0;
}