Pagini recente » Cod sursa (job #2044446) | Monitorul de evaluare | Cod sursa (job #84745) | Cod sursa (job #2106953) | Cod sursa (job #2055086)
#include <bits/stdc++.h>
using namespace std;
int n,q,i,j,lg[100010],dp[100010][20],x,y,lu;
int main()
{
ifstream cin ("rmq.in");
ofstream cout ("rmq.out");
cin>>n>>q;
for(i=1; i<=n; ++i)
cin>>dp[i][0];
for(j=1; (1<<j)<=n; ++j)
for(i=1; i<=n-(1<<j)+1; ++i)
dp[i][j]=min(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
lg[1]=0;
for(i=2; i<=n; ++i)
lg[i]=lg[i/2]+1;
while(q--)
{
cin>>x>>y;
lu=y-x+1;
cout<<min(dp[x][lg[lu-1]],dp[y-(1<<lg[lu-1])+1][lg[lu-1]])<<'\n';
}
return 0;
}