Pagini recente » Cod sursa (job #168578) | Cod sursa (job #3235549) | Cod sursa (job #2649793) | Cod sursa (job #590421) | Cod sursa (job #2466611)
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int n, m, i, j, x, b, c;
int a[18][100001], v[1000001], putere2[18];
int main()
{
fin >> n >> m;
for ( i = 1 ; i <= n ; i++ ) fin >> v[i];
x = log2 ( n );
putere2[0] = 1;
for ( i = 1 ; i <= x ; i++ ) putere2[i] = 1 << i;
for ( i = 1 ; i <= n ; i++ ) a[0][i] = v[i];
for ( i = 1 ; i <= x ; i++ )
for ( j = 1 ; j <= n - putere2[i] + 1 ; j++ )
a[i][j] = min ( a[i-1][j], a[i-1][j+putere2[i-1]] );
for ( i = 1 ; i <= m ; i++ )
{
fin >> b >> c;
x = log2 ( c - b + 1 );
fout << min ( a[x][b], a[x][c-putere2[x]+1] ) << '\n';
}
return 0;
}