Pagini recente » Cod sursa (job #1820938) | Cod sursa (job #1799624) | Cod sursa (job #1169058) | Cod sursa (job #1719457) | Cod sursa (job #1312759)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int NMax = 100005;
int M[NMax][20];
int main()
{
int n,m,x,y,k,dif,p;
f >> n >> m;
for(int i = 0; i < n; i++)
f >> M[i][0];
for(int j = 1; (1 << j) <= n; j++){
for(int i = 0; i + (1 << j) - 1 < n; i++){
M[i][j] = min(M[i][j-1],M[i+(1<<(j-1))][j-1]);
}
}
for(int i = 1; i <= m; i++){
f >> x >> y;
dif = y - x + 1;
k = log2(dif);
p = dif - (1 << k);
x--;
g << min(M[x][k],M[x+p][k]) << "\n";
}
return 0;
}