Pagini recente » Cod sursa (job #2721641) | Cod sursa (job #3195099) | Cod sursa (job #2370737) | Cod sursa (job #204748) | Cod sursa (job #1022044)
#include<fstream>
#include<algorithm>
#define N 100001
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[20][N],lg[N];
int n,m,i,k,l,x,y;
int main()
{
f>>n>>m>>rmq[0][1];
for(i=2;i<=n;i++)
{
lg[i]=lg[i>>1]+1;
f>>rmq[0][i];
}
for(k=1;(1<<k)<=n;k++)
{
for(i=1;i+(1<<k)-1<=n;i++)
{
l=1<<(k-1);
rmq[k][i]=min(rmq[k-1][i],rmq[k-1][i+l]);
}
}
for(;m;m--)
{
f>>x>>y;
l=lg[y-x+1];
y=y-x+1-(1<<l);
g<<min(rmq[l][x],rmq[l][x+y])<<"\n";
}
}