Pagini recente » Cod sursa (job #688288) | Cod sursa (job #3357548) | Cod sursa (job #2098239) | Cod sursa (job #2054680) | Cod sursa (job #2048693)
#include<fstream>
#define DN 100005
#include<iostream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,x,y,r[35][DN],a[DN],mi=(1<<28);
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>a[i];
r[0][i]=a[i];
}
for(int j=1;j<=17;j++)
for(int i=1;i<=n;i++)
if(i+(1<<(j-1))<=n)
{
// cout<<j<<' '<<i<<' '<<i+(1<<(j-1))<<'\n';
r[j][i]=min(r[j-1][i],r[j-1][i+(1<<(j-1))]);
}
for(int i=1;i<=m;i++)
{
fin>>x>>y;
mi=(1<<28);
for(int j=17;j>=0&&x<y;j--)
if(r[j][x])
{//cout<<i<<' '<<x<<' '<<x+(1<<j)-1<<' ';
if(x+(1<<j)-1<=y)
{
mi=min(mi,min(r[j][x],a[x+(1<<j)]));
x+=(1<<j);
}
//cout<<mi<<'\n';
}
fout<<mi<<'\n';
}
}