Pagini recente » Cod sursa (job #404528) | Rating Rus Alexandru (Harciogul) | Cod sursa (job #2771919) | Cod sursa (job #315833) | Cod sursa (job #332673)
Cod sursa(job #332673)
#include <stdio.h>
#define DIM 100005
#define LOG 18
int rmq[LOG][DIM];
int log[DIM];
int n,m;
void read ()
{
int i;
scanf ("%d%d",&n,&m);
for (i=1; i<=n; ++i)
scanf ("%d",&rmq[0][i]);
}
int min (int a,int b)
{
if (a<b)
return a;
return b;
}
void proc ()
{
int i,j;
for (i=2; i<=n; ++i)
log[i]=log[i/2]+1;
for (i=1; (1<<i)<=n; ++i)
for (j=1; j<=n-(1<<i)+1; ++j)
rmq[i][j]=min (rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
}
void solve ()
{
int i,x,y,lg;
for (i=1; i<=m; ++i)
{
scanf ("%d%d",&x,&y);
lg=log[y-x+1];
printf ("%d\n",min (rmq[lg][x],rmq[lg][y-(1<<lg)+1]));
}
}
int main ()
{
freopen ("rmq.in","r",stdin);
freopen ("rmq.out","w",stdout);
read ();
proc ();
solve ();
return 0;
}