Pagini recente » Cod sursa (job #1147488) | Cod sursa (job #131863) | Cod sursa (job #1711184) | Cod sursa (job #1833839) | Cod sursa (job #2849804)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[18][100001], l[100001];
int main()
{
int n, m;
f >> n >> m;
for (int i = 1; i <= n; i++)
{
f >> rmq[0][i];
if (i > 1)
l[i] = 1 + l[i/2];
}
for (int i = 1; i <= l[n]; i++)
for (int j = 1; j <= n; j++)
rmq[i][j] = min(rmq[i-1][j - (1 << (i - 1))], rmq[i-1][j]);
int e, st, dr;
for (int i = 0; i < m; i++)
{
f >> st >> dr;
e = l[dr-st+1];
g << min(rmq[e][st+(1 << e)-1], rmq[e][dr]) << '\n';
}
f.close();
g.close();
return 0;
}