Pagini recente » Cod sursa (job #2293645) | Cod sursa (job #1844114) | Cod sursa (job #2832790) | Cod sursa (job #124600) | Cod sursa (job #2521325)
#include <bits/stdc++.h>
#define Dim 100001
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N,M,dp[Dim][20],x,y,V[Dim],ans;
int main()
{
f>>N>>M;
for(int i=1;i<=N;i++)
{
f>>V[i];
dp[i][0]=i;
}
for(int j=1;j<=log2(N);j++)
for(int i=1;i+(1<<j)-1<=N;i++)
if( V[ dp[ i ][ j - 1 ] ] < V[ dp[ i + ( 1<<(j-1) ) ][ j - 1 ] ] )
dp[i][j]=dp[i][j-1];
else
dp[i][j]=dp[i + ( 1<<(j-1) ) ][ j - 1 ];
for(int i=1;i<=M;i++)
{
f>>x>>y;
int lg=y-x+1;
int p=log2(lg);
ans=min( V[ dp[ x ][ p ] ] , V[ dp[ y - ( 1<<p ) + 1 ][ p ] ] );
g<<ans<<'\n';
}
return 0;
}