Pagini recente » Cod sursa (job #547216) | Cod sursa (job #1609429) | Cod sursa (job #1472433) | Cod sursa (job #1016317) | Cod sursa (job #1135993)
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int DP[18][200005],N,M,a,b;
inline void read()
{
scanf("%d%d",&N,&M);
for(int i = 1; i <= N; ++i)
scanf("%d",&DP[0][i]);
}
inline void RMQ()
{
int gap = 1;
for(int i = 1; i <= 17; ++i)
{
for(int j = 1; j <= N; ++j)
DP[i][j] = min(DP[i-1][j],DP[i-1][j+gap]);
gap *= 2;
}
}
inline void Querry(int a,int b)
{
int line = log2(b-a+1);
printf("%d\n",min(DP[line][a],DP[line][b + 1-(1<<line)]));
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
read();
RMQ();
for(int i = 1; i <= M; ++i)
{
scanf("%d%d",&a,&b);
Querry(a,b);
}
return 0;
}