Pagini recente » Cod sursa (job #418261) | Cod sursa (job #347192) | Cod sursa (job #231486) | Cod sursa (job #992350) | Cod sursa (job #2042330)
#include <fstream>
#include <cmath>
#define Nmax 100011
#define LgN 20
using namespace std;
int rmq[Nmax][LgN],v[Nmax],n,m;
int main()
{
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
fin>>n>>m;
for (int i=1;i<=n;++i)
{
fin>>v[i];
rmq[i][0]=v[i];
}
for (int j=1;j<=18;++j)
{
for (int i=1;i<=n-(1<<j)+1;++i)
{
rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
}
}
for (int i=1;i<=m;++i)
{
int st,dr;
fin>>st>>dr;
int k=log2(dr-st+1);
fout<<min(rmq[st][k],rmq[dr-(1<<k)+1][k])<<"\n";
}
}