Pagini recente » Cod sursa (job #2416020) | Cod sursa (job #2062805) | Cod sursa (job #3175748) | Cod sursa (job #2853932) | Cod sursa (job #1525197)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int nmax = 100050;
int n, m, logaritm[nmax];
int mat[20][nmax];
int main()
{int s;
f>>n>>m;
for(int i = 1; i <= n; ++i)
f>>mat[0][i];
for(int i = 1; (1 << i) <= n; ++i){
for(int j = 1; j <= n - (1 << i) + 1; ++j){
s = 1 << (i - 1);
mat[i][j] = min( mat[i - 1][j], mat[i - 1][j + s] );
}
}
int dif;
for(int i = 2; i <= n; ++i)
logaritm[i] = logaritm[i >> 1] + 1;
for(int i = 1, x, y; i <= m; ++i){
f>>x>>y;
dif = y - x + 1;
g<<min(mat[ logaritm[dif] ][ x ], mat[ logaritm[dif] ][y - (1 << logaritm[dif] ) + 1 ] )<<'\n';
}
return 0;
}