Pagini recente » Cod sursa (job #151455) | Cod sursa (job #561063) | Cod sursa (job #3242331) | Cod sursa (job #119087) | Cod sursa (job #606569)
Cod sursa(job #606569)
#include<cstdio>
#define min(x,y) (x < y ? x : y)
using namespace std;
int D[18][100100];
inline int log2(int X)
{
int pow=0;
while ((1<<pow) <= X)
pow++;
return pow - 1;
}
int main()
{
int N,M,x,y,val,i,j;
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&N,&M);
for(i=1;i<=N;i++)
scanf("%d",&D[0][i]);
for(i=1;i<=log2(N);i++)
for(j=1;j<=N;j++)
{
if(j + (1<<i) > N+1)
break;
D[i][j] = min(D[i-1][j] , D[i-1][j+(1<<(i-1))]);
}
for(i=1;i<=M;i++)
{
scanf("%d%d",&x,&y);
val = log2(y-x+1);
printf("%d\n", min (D[val][x] , D[val][y-(1<<val)+1]));
}
return 0;
}