Pagini recente » Cod sursa (job #1769411) | Cod sursa (job #601036) | Cod sursa (job #2683895) | Cod sursa (job #153763) | Cod sursa (job #3002103)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
///#include <tryhardmode>
///#include <GODMODE::ON>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
const int LGMAX=20;
const int NMAX=1e5+5;
int rmq[LGMAX][NMAX];
int lg[NMAX];
int v[NMAX];
int query(int x,int y)
{
int interv=y-x+1;
int l=lg[interv];
return min(rmq[l][x],rmq[l][x+interv-(1<<l)]);
}
int main()
{
int n,m,i,j,e;
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>v[i];
rmq[0][i]=v[i];
}
lg[1]=0;
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for(e=1;(1<<e)<=n;e++)
{
for(i=1;i<=n;i++)
{
if(i+(1<<(e-1))>n)
continue;
rmq[e][i]=min(rmq[e-1][i],rmq[e-1][i+(1<<(e-1))]);
}
}
for(i=1;i<=m;i++)
{
int x,y;
fin>>x>>y;
fout<<query(x,y)<<"\n";
}
return 0;
}