Pagini recente » Cod sursa (job #1340553) | Cod sursa (job #1971217) | Cod sursa (job #1880551) | Cod sursa (job #2307187) | Cod sursa (job #2839836)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, x, y;
int rmq[20][100001];
int main()
{
fin >> n >> m;
for(int i=1;i<=n;i++)
fin >> rmq[0][i];
for(int i=1,lg=2;lg<=n;i++,lg*=2)
for(int j=1;j+lg-1<=n;j++)
rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + lg / 2]);
for(int w=1;w<=m;w++)
{
fin >> x >> y;
int lg = y - x + 1;
int i = 0, Z = 1;
while(Z * 2 <= lg)
{
Z *= 2;
i++;
}
int rez = min(rmq[i][x], rmq[i][y - Z + 1]);
fout << rez << '\n';
}
return 0;
}