Pagini recente » Cod sursa (job #1715759) | Cod sursa (job #514831) | Cod sursa (job #730874) | Cod sursa (job #629077) | Cod sursa (job #2270396)
#define N 1000001
#define L 18
#include <iostream>
#include <fstream>
using namespace std;
int r[L][N], log[L];
ifstream fin ("rmq.in" );
ofstream fout ("rmq.out");
int main()
{
int n, m;
fin >> n >> m;
log[1] = 0;
for ( int i = 2; i <= n; i++ )
{
log[i] = log[i/2] + 1;
}
for ( int i = 1; i <= n; i++ )
{
fin >> r[0][i] ;
}
for ( int i = 1; i <= log[n]; i++ )
{
for ( int j = 1 << i ; j <= n; j++ )
{
r[i][j] = min ( r[i-1][j - ( 1 << (i-1) ) ], r[i-1][j] );
}
}
while ( m > 0 )
{
m--;
int x, y;
fin >> x >> y;
int l = log[y-x+1];
int rez = min ( r[l][x+(1<<l)-1], r[l][y] );
fout << rez << "\n";
}
return 0;
}