Pagini recente » Cod sursa (job #1582657) | Cod sursa (job #2403564) | Cod sursa (job #1856593) | Cod sursa (job #2156091) | Cod sursa (job #332671)
Cod sursa(job #332671)
#include <stdio.h>
#define DIM 100005
#define LOG 20
int rmq[DIM][LOG];
int log[DIM];
int n,m;
void read ()
{
int i;
scanf ("%d%d",&n,&m);
for (i=1; i<=n; ++i)
scanf ("%d",&rmq[i][0]);
}
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 (j=1; (1<<j)<=n; ++j)
for (i=1; i<=n-(1<<j)+1; ++i)
rmq[i][j]=min (rmq[i][j-1],rmq[i+(1<<j-1)][j-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[x][lg],rmq[y-(1<<lg)+1][lg]));
}
}
int main ()
{
freopen ("rmq.in","r",stdin);
freopen ("rmq.out","w",stdout);
read ();
proc ();
solve ();
return 0;
}