Pagini recente » Cod sursa (job #2794507) | Cod sursa (job #1011541) | Cod sursa (job #904228) | Cod sursa (job #1515251) | Cod sursa (job #1800060)
#include <cstdio>
using namespace std;
int d[100005][17];
int log[100005];
int minz(int a,int b)
{
if(a<b)
return a;
return b;
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n,q,i,j,a,b;
scanf("%d %d",&n,&q);
for(i=1;i<=n;++i)
scanf("%d",&d[i][0]);
for(j=1;(1<<j)<=n;j++)
for(i=(1<<(j-1))+1;i<=n;++i)
{
d[i][j]=minz(d[i][j-1],d[i-(1<<(j-1))][j-1]);
}
log[1]=0;
for(i=2;i<=n;++i)
log[i]=1+log[1/2];
for(i=1;i<=q;++i)
{
scanf("%d %d",&a,&b);
printf("%d\n",minz(d[b][log[b-a+1]],d[a+(1<<log[b-a+1])-1][log[b-a+1]]));
}
return 0;
}