Pagini recente » Cod sursa (job #778782) | Cod sursa (job #2608527) | Cod sursa (job #3222165) | Cod sursa (job #3238530) | Cod sursa (job #1169510)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream is("rmq.in");
ofstream os("rmq.out");
int N, T;
int RMQ[21][100010];
int x, y, len, step;
int main()
{
is >> N >> T;
for ( int i = 1; i <= N; ++i )
is >> RMQ[0][i];
int k,p;
for ( k = 1, p = 2; p <= N; k++, p <<= 1 )
for ( int i = 1; i + (p>>1) <= N; i++ )
RMQ[k][i] = min(RMQ[k-1][i],RMQ[k-1][i+(p>>1)]);
for ( int i = 1; i <= T; ++i )
{
is >> x >> y;
len = y - x + 1;
for ( step = 0, p = 1; p <= len; step++, p <<= 1 );
step--;
p>>=1;
os << min(RMQ[step][x],RMQ[step][y-p+1]) << '\n';
}
return 0;
}