Pagini recente » Cod sursa (job #3147030) | Cod sursa (job #935277) | Cod sursa (job #59849) | Cod sursa (job #3292472) | Cod sursa (job #3139541)
#include <fstream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <cstdlib>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int dp[100001][21];
int main()
{
int n,m,l;
cin>>n>>m;
vector<int>v(n+1);
vector<int>log(n+1,0);
for(int i=1;i<=n;i++)
{
cin>>v[i];
}
for(int i=2;i<=n;i++)
{
log[i]=1+log[i/2];
}
for(int i=1;i<=n;i++)
{
dp[i][0]=v[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=log[i];j++)
{
dp[i][j]=min(dp[i][j-1],dp[i-(1<<(j-1))][j-1]);
}
}
int x,y;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
cout<<min(dp[x+(1<<log[y-x+1])-1][log[y-x+1]],dp[y][log[y-x+1]])<<"\n";
}
return 0;
}