Pagini recente » Cod sursa (job #1662850) | Cod sursa (job #1360125) | Cod sursa (job #910706) | Cod sursa (job #2203057) | Cod sursa (job #411939)
Cod sursa(job #411939)
#include <stdio.h>
using namespace std;
const int size = 100010;
int rmq[20][size],n,m;
int dif[size];
void citire()
{
scanf ("%d %d",&n,&m);
for (int i=1;i<=n;i++)
scanf ("%d",&rmq[0][i]);
}
inline int min(int a,int b)
{
return a<b?a:b;
}
void rmq_solve()
{
for (int i=2;i<=n;i++)
dif[i] = dif[i>>1]+1;
for (int i=1;i<=dif[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 a,b,d;
for (int i=0;i<m;i++)
{
scanf ("%d %d",&a,&b);
d=dif[b-a+1];
printf("%d\n",min(rmq[d][a] ,rmq[d][b-(1<<d)+1]));
}
}
int main()
{
freopen ("rmq.in","r",stdin);
freopen ("rmq.out","w",stdout);
citire();
rmq_solve();
afish();
return 0;
}