Pagini recente » Cod sursa (job #2718559) | Cod sursa (job #136828) | Cod sursa (job #3127971) | Cod sursa (job #1188701) | Cod sursa (job #2230407)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,i,j,x,a,b,logn;
int M[100005][18],k[100005];
int main() {
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>M[i][0];
k[0]=-1;
for(i=1;i<=n;i++)
{
k[i]=k[i-1];
if((i&(i-1))==0) k[i]++;
}
for(j=1;j<=k[n];j++)
for(i=1;i<=n-(1<<j)+1;i++)
M[i][j]=min(M[i][j-1], M[i+(1<<(j-1))][j-1]);
for(i=1;i<=m;i++)
{
fin>>a>>b;
x=b-a+1;
fout<<min(M[a][k[x]],M[b-(1<<k[x])+1][k[x]])<<"\n";
}
}