Pagini recente » Cod sursa (job #2946009) | Cod sursa (job #1896298) | Cod sursa (job #2760635) | Cod sursa (job #447484) | Cod sursa (job #1897109)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int b[20][100005],a[100005],n,m,p,i,j,t,r,q,s,l,i1,n1,x,y,nr;
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>a[i];
b[0][i]=a[i];
}
p=1;
s=0;
while(p<=n)
p=p*2,s++;
s--;
i=1;
t=1;
j=n-t;
l=1;
while(j>0)
{
j=n-t;
r=1;
for(q=1;q<=l-1;q++)
r=r*2;
for(i1=1;i1<=n;i1++)
b[l][i1]=min(b[l-1][i1],b[l-1][i1+r]);
t=t*2;
l++;
}
for(i=1;i<=m;i++)
{
f>>x>>y;
p=y-x+1;
t=1;
nr=0;
while(t<=p)
t=t*2,nr++;
nr--;
n1=1;
for(j=1;j<=nr;j++)
n1*=2;
n1--;
g<<min(b[nr][x],b[nr][y-n1])<<"\n";
}
return 0;
}