Pagini recente » Cod sursa (job #1517146) | Cod sursa (job #199547) | Profil StarGold2 | Cod sursa (job #2356749) | Cod sursa (job #1875896)
//RANGE MINIMUM QUERY (INFOARENA.RO)
#include <cstdio>
#include <algorithm>
#define NMAX 100001
#define LOGNMAX 18
using namespace std;
int n,m,x,i,j,put,k,sol;
int v[NMAX],a[NMAX][LOGNMAX];
void calculare_matrice()
{
for(i=1;i<=n;i++)
a[i][0]=v[i];
for(i=n;i;i--)
for(j=1;i+(1<<j)-1<=n;j++)
a[i][j]=min(a[i][j-1],a[i+(1<<(j-1))][j-1]);
}
void log(int x)
{
for(put=1,k=0;put*2<=x;put*=2,k++);
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d",&n,&m);
for(x=1;x<=n;x++)
scanf("%d",&v[x]);
calculare_matrice();
for(x=1;x<=m;x++)
{
scanf("%d %d",&i,&j);
log(j-i+1);
sol=min(a[i][k],a[j-(1<<k)+1][k]);
printf("%d\n",sol);
}
return 0;
}