Pagini recente » Cod sursa (job #262975) | Cod sursa (job #1931521) | Cod sursa (job #481233) | Cod sursa (job #2064787) | Cod sursa (job #156357)
Cod sursa(job #156357)
#include <stdio.h>
#define NM 100001
#define lgNM 18
#define min(a,b) (a<b?a:b)
long a[NM][lgNM];
long nrbiti(long x)
{ long nr=0;
while (x)
{ nr++;
x=x>>1;
}
return nr;
}
int main()
{ long n,m;
freopen("rmq.in","rt",stdin);
freopen("rmq.out","wt",stdout);
scanf("%ld %ld",&n,&m);
long i,j,x,y,nr,nrn,minim,dif;
for (i=1;i<=n;i++) scanf("%ld",&a[i][0]);
nrn=nrbiti(n);
for (j=1;j<=nrn;j++)
for (i=1;i<=n-(1<<j)+1;i++)
a[i][j]=min(a[i][j-1],a[i+(1<<j-1)][j-1]);
for (i=1;i<=m;i++)
{ scanf("%ld %ld",&x,&y);
nr=nrbiti(y-x+1);nr--;
minim=min(a[x][nr-1],a[y-(1<<nr)+1][nr]);
printf("%ld\n",minim);
}
fcloseall();
return 0;
}