Pagini recente » Cod sursa (job #484965) | Cod sursa (job #3176254) | Cod sursa (job #1941304) | Cod sursa (job #2290305) | Cod sursa (job #1525130)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int nmax = 100000;
int n, m, logaritm[nmax];
int mat[20][nmax];
int main()
{
f>>n>>m;
for(int i = 1; i <= n; ++i)
f>>mat[0][i];
for(int i = 0; (i << 1) <= n; ++i){
mat[i][n + 1] = 900000;
}
for(int i = 1; (i << 1) <= n; ++i){
for(int j = 1; j <= n; ++j){
mat[i][j] = min( mat[i - 1][j], mat[i - 1][j + 1] );
}
}
int dif;
for(int i = 2; i <= n; ++i)
logaritm[i] = logaritm[i / 2] + 1;
for(int i = 1, x, y; i <= m; ++i){
f>>x>>y;
dif = y - x;
g<<min(mat[ logaritm[dif] ][ x ], mat[ logaritm[dif] ][x + dif] )<<'\n';
}
return 0;
}