Pagini recente » Cod sursa (job #1082571) | Cod sursa (job #817027) | Cod sursa (job #949469) | Cod sursa (job #1353347) | Cod sursa (job #2106787)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int nr, intrebari, k, v[100004], multiplu, spars[18][100004];
int a, b, lg;
int main()
{
cin >> nr >> intrebari;
for(int i=1; i <= nr; i++)
cin >> spars[0][i];
k = log2(nr);
multiplu = 1;
for(int i=1; i <= k; i++)
{
multiplu = multiplu << 1;
for(int j=1; j+multiplu/2 <= nr; j++)
{
spars[i][j] = min(spars[i-1][j], spars[i-1][j+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(spars[k][a], spars[k][b-multiplu+1]) << '\n';
}
}