Pagini recente » Cod sursa (job #1578193) | Cod sursa (job #2557973) | Cod sursa (job #964670) | Cod sursa (job #713821) | Cod sursa (job #2788096)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
const int NMAX=100001;
const int QMAX=1000001;
const int POW=32;
int n,q,v[NMAX],rmq[QMAX][POW];
int main()
{
fin >>n>>q;
for (int i=1;i<=n;++i){
fin >>rmq[i][0];
}
for (int j=1;j<=log2 (n);++j){
for (int i=1;i<=n;++i){
int a,b;
a=rmq[i][j-1];
b=rmq[min (i+int (pow(2,j-1)),n)][j-1];
rmq[i][j]=min (a,b);
}
}
for (int i=1;i<=q;++i)
{
int x,y,len;
fin >>x>>y;
len=y-x+1;
len=log2 (len);
fout <<min (rmq[x][len],rmq[y-int (pow (2,len-1))][len])<<'\n';
}
fin.close ();
fout.close ();
return 0;
}