Pagini recente » Cod sursa (job #1323779) | Cod sursa (job #2086506) | Cod sursa (job #1814585) | Cod sursa (job #1638064) | Cod sursa (job #2074336)
#define DM 100005
#define DN 17
#include <fstream>
using namespace std;
ifstream fi ("rmq.in");
ofstream fo ("rmq.out");
int rmq[DN][DM], n, m, q, p, aux, 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) <= n + 1; ++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;
aux = p-q+1;
fo << min(rmq[lg[aux]][q], rmq[lg[aux]][p-(1<<lg[aux])+1]) << '\n';
}
return 0;
}