Pagini recente » Cod sursa (job #134083) | Cod sursa (job #312097) | Cod sursa (job #2832354) | Cod sursa (job #166275) | Cod sursa (job #3340260)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int r[20][100005], E[100005];
int main()
{
int n, m, a ,b;
in>>n>>m;
for(int i=1;i<=n;i++){
in>>r[0][i];
}
for(int p=1;(1<<p)<=n;p++){
for(int i=1;i<=n;i++){
int j=i+(1<<(p-1));
r[p][i] = r[p-1][i];
if(j<=n && r[p][i]>r[p-1][j])
r[p][i] = r[p-1][j];
}
}
E[1]=0;
for(int i=2;i<=n;i++)
E[i] = 1+E[i/2];
while(m--){
in>>a>>b;
int e = E[b-a+1];
int len = (1<<e);
out<<min(r[e][a], r[e][b-len+1])<<"\n";
}
return 0;
}