Pagini recente » Cod sursa (job #111835) | Cod sursa (job #3227987) | Cod sursa (job #2569728) | Cod sursa (job #492992) | Cod sursa (job #2042344)
#include<fstream>
#include<cmath>
#include<math.h>
#define Nmax 100069
#define Lgn 18
using namespace std;
int rmq[Nmax][Lgn],v[Nmax];
int main()
{
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n=0,m=0,st=0,dr=0,k=0;
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>v[n];
rmq[i][0]=v[n];
}
for (int p=1;p<=18;++p)
{
for (int i=1;i<=n-(1<<p)+1;++i)
{
rmq[i][p]=min(rmq[i][p-1],rmq[i+(1<<p-1)][p-1]);
}
}
for(int i=1;i<=m;i++)
{
fin>>st>>dr;
k=log2(dr-st+1);
fout<<min(rmq[st][k],rmq[dr-(1<<k)+1][k])<<endl;
}
}