Pagini recente » Cod sursa (job #1999793) | Cod sursa (job #1631732) | Cod sursa (job #2506098) | Cod sursa (job #3159178) | Cod sursa (job #1274185)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,i,j,a[100001],p,s,d,nr,ma[100001][30],lg[100001];
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
f>>a[i],ma[i][0]=a[i];
for (i=1,p=1;p<=n;i++,p*=2)
for (j=1;j+p-1<=n;j++)
ma[j][i]=min(ma[j][i-1],ma[j+p/2][i-1]);
for (i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for (i=1;i<=m;i++)
{
f>>s>>d;
nr=lg[s-d+1];
g<<min(ma[s][nr],ma[d-(1<<nr)+1][nr])<<'\n';
}
return 0;
}