Pagini recente » Cod sursa (job #2363100) | Cod sursa (job #330212) | Cod sursa (job #399101) | Cod sursa (job #1678875) | Cod sursa (job #1613373)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int N, M;
int RMQ[18][100010];
int main()
{
in >> N >> M;
for (int i = 1; i <= N; ++i)
in >> RMQ[0][i];
for (int p = 1; p <= 18; p++)
{
int pw2 = (1 << p);
for (int j = 1; j + pw2 - 1 <= N; ++j)
RMQ[p][j] = min(RMQ[p - 1][j], RMQ[p - 1][j + pw2 - (pw2>>1)]);
}
for (int i = 1; i <= M; ++i)
{
int a, b;
in >> a >> b;
int dif = b - a + 1;
int put = 0,pw2;
while ((1 << put) <= dif)
++put;
--put;
pw2 = (1 << put);
out << min(RMQ[put][a], RMQ[put][b- pw2+1])<<'\n';
}
return 0;
}