Pagini recente » Cod sursa (job #1569833) | Cod sursa (job #3166475) | Cod sursa (job #23219) | Cod sursa (job #223681) | Cod sursa (job #2121176)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int nr, intrebari, matrice[18][100004], k, multiplu, a, b, lg;
int main()
{
cin >> nr >> intrebari;
for(int i=1; i <= nr; i++)
cin >> matrice[0][i];
k = log2(nr);
multiplu = 1;
for(int i=1; i <= k; i++)
{
for(int j=1; j+multiplu <= nr; j++)
{
matrice[i][j] = min(matrice[i-1][j], matrice[i-1][j+multiplu]);
}
multiplu *= 2;
}
for(int i=1; i <= intrebari; i++)
{
cin >> a >> b;
lg = b-a+1;
k = log2(lg);
multiplu = 1;
for(int j=1; j <= k; j++)
multiplu *= 2;
cout << min(matrice[k][a], matrice[k][b-multiplu+1]) << '\n';
}
}