Pagini recente » Cod sursa (job #1765465) | Cod sursa (job #477754) | Cod sursa (job #847161) | Istoria paginii runda/100/clasament | Cod sursa (job #2758245)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ( "rmq.in" );
ofstream fout ( "rmq.out" );
int lg [ 100005 ], n, m, a [ 100005 ], v [ 18 ] [ 100005 ], x, y;
static inline void logaritm ( ) {
lg [ 1 ] = 0;
for ( int i = 2; i <= n; ++ i ) {
lg [ i ] = lg [ i / 2 ] + 1;
}
}
int main() {
fin >> n >> m;
for ( int i = 1; i <= n; ++ i ) {
fin >> a [ i ];
}
logaritm();
for ( int i = 1; i <= n; ++ i ) {
v [ 0 ] [ i ] = a [ i ];
}
int l = lg [ n ];
for ( int i = 1; i <= l; ++ i ) {
for ( int j = 1; j <= n; ++ j ) {
v [ i ] [ j ] = min ( v [ i - 1 ] [ j ], v [ i - 1 ] [ j + ( 1 << ( i - 1 ) ) ] );
}
}
for ( int i = 1; i <= m; ++ i ) {
fin >> x >> y;
int k = lg [ y - x ];
fout << min ( v [ k ] [ x ], v [ k ] [ y - ( 1 << k ) + 1 ] ) << '\n';
}
return 0;
}