Pagini recente » Cod sursa (job #1598749) | Cod sursa (job #2074413) | Cod sursa (job #1253331) | Cod sursa (job #2181087) | Cod sursa (job #2811728)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int LOG=18;
const int MAX_N=100001;
int n,m,v[LOG][MAX_N],log2[MAX_N],sf,st,dr,len,l;
int main()
{
fin >> n >> m;
log2[1]=0;
for(int i=2;i<=n;i++)
log2[i]=log2[i>>1]+1;
for(int i=1;i<=n;i++)
fin >> v[0][i];
len=log2[n];
for(int i=1;i<=len;i++)
{
sf=n-(1<<i)+1;
l=1<<(i-1);
for(int j=1;j<=sf;j++)
v[i][j]=min(v[i-1][j],v[i-1][j+l]);
}
for(;m;--m)
{
fin >> st >> dr;
l=log2[dr-st+1];
fout << min(v[l][st],v[l][dr-(1<<l)+1]) << '\n';
}
return 0;
}