Pagini recente » Cod sursa (job #2322996) | Cod sursa (job #481461) | Cod sursa (job #3036471) | Cod sursa (job #1417193) | Cod sursa (job #2811730)
#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[MAX_N][LOG],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[i][0];
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[j][i]=min(v[j][i-1],v[j+l][i-1]);
}
for(;m;--m)
{
fin >> st >> dr;
l=log2[dr-st+1];
fout << min(v[st][l],v[dr-(1<<l)+1][l]) << '\n';
}
return 0;
}