Pagini recente » Istoria paginii utilizator/bubu111 | Monitorul de evaluare | Cod sursa (job #1615590) | Monitorul de evaluare | Cod sursa (job #2238881)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int N = 17;
const int M = 1<<17;
int n,q,i,st,dr,mi,p,a[N][M],L[M],lg,sol;
int main()
{
f>>n>>q;
for(i=1;i<=n;i++)
f>>a[0][i];
for(i=1;(1<<i)<=n;i++)
{
st=1;dr=(1<<i);mi=dr/2+1;
for(;dr<=n;st++,mi++,dr++)
a[i][st]=min(a[i-1][st],a[i-1][mi]);
}
for(i=2;i<=n;i*=2)
L[i]=1;
for(i=1;i<=n;i++)
L[i]+=L[i-1];
for(;q;q--)
{
f>>st>>dr;
lg=dr-st+1;
i=L[lg];
p=1<<i;
sol=min(a[i][st],a[i][dr-p+1]);
g<<sol<<'\n';
}
return 0;
}