Pagini recente » Cod sursa (job #636346) | Cod sursa (job #1801477) | Cod sursa (job #2016865) | Cod sursa (job #2806410) | Cod sursa (job #2048754)
#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),d[DN],t,h;
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((1<<j)<=i)
d[i]=j;
if(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;
t=y-x+1;
h=d[t];
fout<<min(r[h][x],r[h][x+t-(1<<h)])<<'\n';
}
}