Pagini recente » Cod sursa (job #143880) | Cod sursa (job #2137156) | Cod sursa (job #1712890) | Cod sursa (job #2905546) | Cod sursa (job #2284674)
#include <bits/stdc++.h>
using namespace std;
const int mxn = 100 * 1000 + 10;
const int mxp = 20;
int rmq[ mxp ][ mxn ];
int n, m;
int pmx;
int main()
{
ios_base::sync_with_stdio( false );
cin.tie( 0 );
ifstream cin("rmq.in");
ofstream cout("rmq.out");
cin>> n >> m;
for(int i = 1, x; i <= n; i++){
cin>> x;
rmq[ 0 ][ i ] = x;
}
for(int p = 1; (1 << p) < n; p++){
pmx = (1 << p);
for(int j = 1; j + p <= n; j++){
rmq[ p ][ j ] = min(rmq[ p - 1 ][ j ], rmq[ p - 1 ][ j + (1 << (p - 1)) ]);
}
}
for(int i = 1, x, y; i <= m; i++){
cin>> x >> y;
int p = log2(y - x + 1);
cout<< min(rmq[ p ][ x ], rmq[ p ][ y - (1 << p) + 1] )<< '\n';
}
}