Pagini recente » Cod sursa (job #1802258) | Cod sursa (job #2819178) | Cod sursa (job #1797198) | Cod sursa (job #3181836) | Cod sursa (job #1148182)
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int k,x,y,n,m,r[18][100002],i,j,loga[100002];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&r[0][i]);
}
loga[0]=-1;
for(i=1;i<=n;i++)
{
loga[i]=loga[i/2]+1;
}
for(i=1;i<=loga[n];i++)
{
for(j=1;j<=n;j++)
{
if(j<=n-(1<<(i-1)))
{
r[i][j]=min(r[i-1][j],r[i-1][j+(1<<(i-1))]);
}
else
{
r[i][j]=231092;
}
}
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
k=loga[y-x+1];
printf("%d\n",min(r[k][x],r[k][y-(1<<k)+1]));
}
return 0;
}