Pagini recente » Cod sursa (job #934358) | Cod sursa (job #2712745) | Cod sursa (job #2695807) | Cod sursa (job #2886456) | Cod sursa (job #3240543)
#include <fstream>
using namespace std;
ifstream cin ("rmq.in");
ofstream cout ("rmq.out");
int n,m,st,dr,e,Log[100002],rmq[17][100002];
int main()
{
cin>>n>>m;
Log[0]=-1;
for(int i=1;i<=n;i++){
cin>>rmq[0][i];
Log[i]=1+Log[i>>1];
}
for(int p=1;(1<<p)<=n;p++){
for(int i=1;i<=n;i++){
rmq[p][i]=rmq[p-1][i];
e=i+(1<<(p-1));
if(e<=n && rmq[p-1][e]<rmq[p][i])
rmq[p][i]=rmq[p-1][e];
}
}
for(int i=1;i<=m;i++){
cin>>st>>dr;
e=Log[dr-st+1];
cout<<min(rmq[e][st], rmq[e][dr-(1<<e)+1])<< '\n';
}
return 0;
}