Pagini recente » Cod sursa (job #1965853) | Cod sursa (job #1715427) | Cod sursa (job #2488520) | Cod sursa (job #3228631) | Cod sursa (job #202790)
Cod sursa(job #202790)
#include <stdio.h>
#define FIN "rmq.in"
#define FOUT "rmq.out"
#define NMAX 101000
#define NMIN 20
int C[NMIN][NMAX];
int N,M;
int log[NMAX];
int s,c;
int x,y;
int REZ;
int min(int a, int b)
{
if (a>b) return b;
else return a;
}
int main()
{
int i;
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d %d", &N, &M);
for (i=1;i<=N;++i)
scanf("%d", &C[0][i]);
log[0]=1;
for (i=2;i<=N;++i)
log[i]=log[i/2]+1;
for (s=1,c=1;c<=N;++s,c<<=1)
for (i=1;i<=N;++i)
C[s][i]=min(C[s-1][i],C[s-1][i+c]);
for (i=1;i<=M;++i)
{
scanf("%d %d", &x, &y);
REZ=min(C[log[y-x+1]][x],C[log[y-x+1]][y-(1<<log[y-x+1])+1]);
printf("%d\n", REZ);
}
return 0;
}