Pagini recente » Cod sursa (job #2861241) | Cod sursa (job #126902) | Cod sursa (job #1122020) | Cod sursa (job #960561) | Cod sursa (job #591696)
Cod sursa(job #591696)
# include <fstream>
using namespace std;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
int n, m, i, j, a[18][100010];
inline int minim (int a, int b){
if (a < b) return a;
return b;
}
inline int lgr (int a){
int i;
for (i = 1; (1 << i) <= a; ++i);
return i - 1;
}
int x, y, d, lin, vlg[100010];
int main (){
f >> n >> m;
for (i = 2; i <= n; ++i)
vlg[i] = vlg[i >> 1] + 1;
for (i = 1; i <= n; ++i){
f >> a[0][i];
}
int lim = (1 << vlg[n]);
for (i = 1; (1 << i) <= n; ++i){
for (j = 1; j <= n - (1 << i) + 1; ++j){
a[i][j] = minim (a[i - 1][j], a[i - 1][j + (1 << (i - 1))]);
}
lim >>= 1;
}
for (i = 1; i <= m; ++i){
f >> x >> y;
d = y - x + 1;
lin = vlg[d];
g << minim ( a[lin][x], a[lin][x + d - (1 << lin)] ) << '\n';
}
return 0;
}