Pagini recente » Cod sursa (job #1590389) | Istoria paginii runda/oji10_2019/clasament | Cod sursa (job #2355859) | Cod sursa (job #489794) | Cod sursa (job #3122995)
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int A[100005],n,q,RMQ[20][100005];
void process()
{
for(int j=1;(1<<j)<=n;++j)
for(int i=1;i+(1<<(j-1))<=n;i++)
RMQ[j][i]=min(RMQ[j-1][i],RMQ[j-1][i+(1<<(j-1))]);
}
int rmq(int x,int y)
{
int l=y-x+1,k=0;
for(k=0;1<<k<=l;++k);
k--;
return min(RMQ[k][x],RMQ[k][y-(1<<k)+1]);
}
int main()
{
cin>>n>>q;
for(int i=1;i<=n;++i)
cin>>RMQ[0][i];
process();
for(int i=1;i<=q;i++)
{
int x,y;
cin>>x>>y;
cout<<rmq(x,y)<<"\n";
}
return 0;
}