Pagini recente » Cod sursa (job #1653017) | Cod sursa (job #835820) | Cod sursa (job #2333137) | Cod sursa (job #905810) | Cod sursa (job #980501)
Cod sursa(job #980501)
#include<fstream>
#include<algorithm>
#define NMAX 100005
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[18][NMAX];
int lg[NMAX];
int N,M;
int main ( void )
{
int i , j;
int x ,y ,pt , diff ;
f>>N>>M;
for( i = 1 ; i <= N ; ++i )
f>>rmq[0][i];
for( i = 2 ; i <= N ; ++ i )
lg[i] = lg[i/2] + 1 ;
for( i = 1 ; (1<<i) <= N ; ++i )
for( j = 1 ; j <= N - (1<<i) +1; ++j )
rmq[i][j] = min ( rmq[i-1][j] , rmq[i-1][j+(1<<(i-1))] ) ;
for( i = 1 ; i <= M ; ++i )
{
f>>x>>y;
diff = y-x +1 ;
pt = lg[diff] ;
g<< min( rmq[pt][x] , rmq[ pt ][ x + diff - (1<<pt) ] )<<"\n" ;
}
f.close();
g.close();
return 0;
}