Pagini recente » Cod sursa (job #3179549) | Cod sursa (job #1820533) | Cod sursa (job #2476374) | Cod sursa (job #1310264) | Cod sursa (job #2223724)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int N=1<<17;
int n,i,j,m,st,mi,dr,p,sol,lg,rmq[17][N],e[N];
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
f>>rmq[0][i];
p=2;i=1;
while(p<=n)
{
st=1;dr=p;mi=p/2+1;
while(dr<=n)
{
rmq[i][st]=min(rmq[i-1][st],rmq[i-1][mi]);
st++;dr++;mi++;
}
i++;
p*=2;
}
for(i=2;i<=n;i*=2)
e[i]=1;
for(i=2;i<=n;i++)
e[i]+=e[i-1];
for(;m;m--)
{
f>>st>>dr;
lg=dr-st+1;
i=e[lg];
p=1<<i;
sol=min(rmq[i][st],rmq[i][dr-p+1]);
g<<sol<<'\n';
}
return 0;
}