Pagini recente » Cod sursa (job #636449) | Cod sursa (job #1137503) | Cod sursa (job #425841) | Cod sursa (job #392320) | Cod sursa (job #3233876)
#include<bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n, m, st, dr;
int r[20][100000];
int lg[100005];
int main(){
lg[1]=0;
for(int i=2; i<=100005; i++){
lg[i]=lg[i/2]+1;
}
in>>n>>m;
for(int i=1; i<=n; i++){
in>>r[0][i];
}
int p=1;
for(int i=1; i<=lg[n]; i++){
p*=2;
for(int j=1; j<=n-p+1; j++){
r[i][j]=min(r[i-1][j], r[i-1][j+p/2]);
}
}
for(int i=1; i<=m; i++){
in>>st>>dr;
int sz=lg[dr-st+1];
int mn=min(r[sz][st], r[sz][dr-(1<<sz)+1]);
out<<mn<<'\n';
}
return 0;
}