Pagini recente » Cod sursa (job #931468) | Cod sursa (job #742129) | Cod sursa (job #740543) | Cod sursa (job #1768050) | Cod sursa (job #1762335)
#include <cstdio>
int r[100001][20];
int rez[100001][20];
int logx[100001];
using namespace std;
int min( int a, int b )
{
if( b<a )
a=b;
return a;
}
int main()
{
freopen( "rmq.in", "r", stdin );
freopen( "rmq.out", "w", stdout );
int n, m, x, y, i, j, l, rez;
scanf( "%d%d", &n, &m );
for( i=1;i<=n;i++ )
{
scanf( "%d", &r[i][0] );
for( j=1;(1<<j)<=i;j++ )
r[i][j]=min(r[i][j-1],r[i-(1<<(j-1))][j-1]);
}
logx[1]=0;
for( i=2;i<=n;i++ )
logx[i]=1+logx[i/2];
for( i=1;i<=m;i++ )
{
scanf( "%d%d", &x, &y );
l=logx[y-x+1];
rez=min(r[y][l],r[x+(1<<l)-1][l]);
printf( "%d\n", rez );
}
return 0;
}