Pagini recente » Cod sursa (job #2845005) | Cod sursa (job #3229851) | Cod sursa (job #2534771) | Cod sursa (job #1586358) | Cod sursa (job #2187644)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,i,j,k,x,y;
int a[100010];
int dp[100010][20];
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)fin>>a[i];
for(i=1;i<=n;i++)dp[i][0]=a[i];
for(k=1;1<<k<=n;k++)
{
j=1<<k;
for(i=1;i<=n-j+1;i++)
dp[i][k]=min(dp[i][k-1],dp[i+j/2][k-1]);
}
for(i=1;i<=m;i++)
{
fin>>x>>y;
j=y-x+1;
k=-1;
while(j){k++;j/=2;}
fout<<min(dp[x][k],dp[y-(1<<k)+1][k])<<'\n';
}
return 0;
}