Pagini recente » Cod sursa (job #2237356) | Cod sursa (job #2608) | Cod sursa (job #2131898) | Cod sursa (job #2740066) | Cod sursa (job #2074249)
#define DM 100005
#define DN 16
#include <fstream>
using namespace std;
ifstream fi ("rmq.in");
ofstream fo ("rmq.out");
int rmq[DN][DM], n, m, q, p, lg[DM];
int main()
{
fi >> n >> m;
for (int i = 1; i <= n; ++i)
fi >> rmq[0][i];
for (int i = 2; i < DM; ++i)
lg[i] = lg[i/2] + 1;
for (int i = 1; (1<<i) - 1 <= 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))]);
while (m--)
{
fi >> q >> p;
fo << min(rmq[lg[p-q+1]][q], rmq[lg[p-q+1]][q+lg[p-q]]) << '\n';
}
return 0;
}