Pagini recente » Cod sursa (job #2276370) | Cod sursa (job #1113665) | Cod sursa (job #837986) | Cod sursa (job #89424) | Cod sursa (job #3142094)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int NMAX = 100002;
const int POWER = 18;
int dp[POWER][NMAX], v[NMAX], lg[NMAX];
int main()
{
int n, m;
in >> n >> m;
for( int i = 1; i <= n; i++ ){
in >> v[i];
dp[0][i] = v[i];
}
for( int i = 2; i <= n; i++ )
lg[i] = lg[i/2] + 1;
for( int log = 1; log <= lg[n]; log++ )
for( int i = 1; i <= n; i++ )
dp[log][i] = min( dp[log-1][i], dp[log-1][i + (1 << (log-1))]);
while( m-- ){
int a, b;
in >> a >> b;
int rmq = lg[b-a+1];
out << min( dp[rmq][a], dp[rmq][b - (1 << rmq) + 1]) << "\n";
}
return 0;
}