Pagini recente » Cod sursa (job #3363728) | Cod sursa (job #3361941) | Cod sursa (job #3362121) | Cod sursa (job #3363729) | Cod sursa (job #3363767)
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n,m,i,x,y,log[100005],dp[20][100005],put,poz;
int main()
{
cin>>n>>m;
log[1]=0;
for(i=2;i<=n;i++)
log[i]=log[i/2]+1;
for(i=1;i<=n;i++)
cin>>dp[0][i];
for(put=2;put<=n;put*=2)
{
for(poz=1;poz<=n-put+1;poz++)
{
dp[log[put]][poz]=min(dp[log[put]-1][poz],dp[log[put]-1][poz+put/2]);
}
}
for(i=1;i<=m;i++)
{
cin>>x>>y;
cout<<min(dp[log[y-x+1]][x],dp[log[y-x+1]][y+1-(1<<log[y-x+1])])<<'\n';
}
return 0;
}