Pagini recente » Cod sursa (job #1833035) | Cod sursa (job #2938900) | Cod sursa (job #503307) | Cod sursa (job #1979102) | Cod sursa (job #2531770)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int mat[100005][20];
int lg2[100005];
int main(){
int n,m,i,j,a,b,dif,aux,lg;
fin>>n>>m;
for(i = 1; i <= n; i++){
fin>>mat[i][0];
}
for(i = 2; i <= n; i++){
lg2[i] = lg2[i/2] + 1;
}
for(i = 1; i <= lg2[n]; i++){
for(j = 1; j <= n - (1<<(i))+1; j++){
mat[j][i] = min(mat[j][i-1],mat[j+(1<<(i-1))][i-1]);
}
}
for(i = 1; i <= m; i++){
fin>>a>>b;
dif = b-a+1;
lg = lg2[dif];
aux = dif - (1<<(lg));
fout<<min(mat[a][lg],mat[a+aux][lg])<<endl;
}
return 0;
}