Pagini recente » Cod sursa (job #653200) | Cod sursa (job #1958681) | Cod sursa (job #605159) | Cod sursa (job #658491) | Cod sursa (job #401313)
Cod sursa(job #401313)
#include <algorithm>
using namespace std;
#define DIM 100005
#define LOG 20
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]);
}
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 query ()
{
int i,x,y,dif;
for (i=1; i<=m; ++i)
{
scanf ("%d%d",&x,&y);
dif=log[y-x+1];
printf ("%d\n",min (rmq[dif][x],rmq[dif][y-(1<<dif)+1]));
}
}
int main ()
{
freopen ("rmq.in","r",stdin);
freopen ("rmq.out","w",stdout);
read ();
proc ();
query ();
return 0;
}