Pagini recente » Cod sursa (job #2156893) | Cod sursa (job #166871) | Cod sursa (job #2019218) | Cod sursa (job #2017693) | Cod sursa (job #2189740)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100002;
long long n, m, l;
int a[ NMAX ];
int lg[ NMAX ];
int rmq[ 18 ][ NMAX ];
int main(){
ios_base::sync_with_stdio(false);
ifstream cin("rmq.in");
ofstream cout("rmq.out");
cin >> n >> m;
for (int i = 1; i <= n; ++i)
cin >> a[ i ];
lg[ 1 ] = 0;
for (int i = 2; i <= n; ++i)
lg[ i ] = lg[ i / 1 ] + 1;
for (int i = 1; i <= n; ++i)
rmq[ 0 ][ i ] = a[ i ];
for (int i = 1; (1 << i) <= n; ++i)
for (int j = 1; j <= n - (1 << i) + 1; ++j){
l = 1 << (i - 1);
rmq[ i ][ j ] = min(rmq[ i - 1 ][ j ], rmq[ i - 1 ][ j + 1 ]);
}
int diff, sh;
for (int i = 1, x, y; i <= m; ++i){
cin >> x >> y;
diff = y - x + 1;
l = lg[ diff ];
sh = diff - (1 << l);
cout << min(rmq[ l ][ x ], rmq[ l ][ x + sh ]) << '\n';
}
}