Pagini recente » Cod sursa (job #2694060) | Cod sursa (job #611158) | Cod sursa (job #1829437) | Cod sursa (job #1599322) | Cod sursa (job #2833638)
#include <fstream>
#define INF 1000000000
using namespace std;
ifstream fin ("rmq.in");
ofstream fout("rmq.out");
int r[17][100010];
int e2[100010];
int n, m, i, j, st, dr, minim, p, e, len;
int main ()
{
fin >> n >> m ;
for ( i = 1 ; i <= n ; i ++ )
fin >> r[0][i] ;
for ( p = 1 ; (1<<p) <= n ; p ++ )
for ( i = 1 ; i <= n ; i ++ )
{
r[p][i] = r[p-1][i];
j = i + ( 1 << ( p - 1 ) ) ;
if (j <= n && r[p][i] > r[p-1][j])
r[p][i] = r[p-1][j];
}
e2[1] = 0;
for ( i = 2 ; i <= n ; i ++ )
e2[i] = 1 + e2[i/2] ;
for ( i = 1 ; i <= m ; i ++ )
{
fin >> st >> dr ;
e = e2[dr-st+1] ;
len = ( 1 << e );
int fac1 = r[e][st] ;
int fac2 = r[e][dr-len+1] ;
fout<<min(fac1, fac2 )<<"\n";
}
}