Pagini recente » Cod sursa (job #1096914) | Cod sursa (job #1292634) | Cod sursa (job #958809) | Cod sursa (job #1126657) | Cod sursa (job #563804)
Cod sursa(job #563804)
# include <stdio.h>
using namespace std;
int a[100005][20],lg[100005],x,y,d,q,n,m,i,j,k,w;
inline int min (int a,int b)
{
if (a<b)
return a;
return b;
}
int main ()
{
freopen ("rmq.in","r",stdin);
freopen ("rmq.out","w",stdout);
scanf ("%i%i",&n,&m);
for (i=1;i<=n;i++)
scanf ("%i",&a[i][0]);
for (i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for (j=1;j<=lg[n];j++)
for (i=1;(k=i+(1<<j-1))<=n;i++)
a[i][j]=min (a[i][j-1],a[k][j-1]);
for (i=1;i<=m;i++)
{
scanf ("%i%i",&x,&y);
q=lg[y-x+1];
printf ("%i\n",min (a[x][q],a[(y-(1<<q))+1][q]));
}
return 0;
}