Pagini recente » Cod sursa (job #1584013) | Cod sursa (job #668958) | Cod sursa (job #3183842) | Cod sursa (job #1354392) | Cod sursa (job #408756)
Cod sursa(job #408756)
#include <stdio.h>
#define sizec 100010
#define sizel 20
#define min(a,b) a<b?a:b
using namespace std;
int rmq[sizel][sizec];
int n,m,put[sizec];
void citire()
{
scanf ("%d %d",&n,&m);
for (int i=1;i<=n;i++)
scanf ("%d ",&rmq[0][i]);
}
void solve()
{
for (int i=2;i<=n;i++)
put[i]=put[i>>1]+1;
for (int i=1;i<=put[n];i++)
for (int j=1;j<=n-(1<<i)+1;j++)
rmq[i][j]=min(rmq[i-1][j] , rmq[i-1][j+(1<<(i-1))]);
}
void afish()
{
int x,y,d;
for (int i=0;i<m;i++)
{
scanf ("%d %d",&x,&y);
d=put[y-x+1];
printf("%d\n",min(rmq[d][x], rmq[d][y-(1<<d)+1]));
}
}
int main ()
{
freopen ("rmq.in","r",stdin);
freopen ("rmq.out","w",stdout);
citire();
solve();
afish();
return 0;
}