Pagini recente » Cod sursa (job #2365050) | Cod sursa (job #41930) | Cod sursa (job #828986) | Cod sursa (job #400973) | Cod sursa (job #1044126)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int RMQ[21][100001];
int main()
{
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,i,j,l,h,x,y;
f>>n>>m;
for(i=1;i<=n;i++)
f>>RMQ[0][i];
for(l=1;(1<<l)<=n;++l)
for(i=1;i<=n;++i)
{
if(i+(1<<l)<=n+1)
{ RMQ[l][i]=RMQ[l-1][i];
if(RMQ[l-1][i+(1<<(l-1))]<RMQ[l][i])
RMQ[l][i]=RMQ[l-1][i+(1<<(l-1))]; }
}
for(i=1;i<=m;++i)
{
f>>x>>y;
h=(int)log2(y-x+1);
if(RMQ[h][x]<RMQ[h][y-(1<<h)+1])
g<<RMQ[h][x]<<'\n';
else
g<<RMQ[h][y-(1<<h)+1]<<'\n';
}
f.close();
g.close();
return 0;
}