Pagini recente » Cod sursa (job #63457) | Cod sursa (job #3235193) | Cod sursa (job #225389) | Cod sursa (job #623377) | Cod sursa (job #3038013)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long long n,q,i,expp,p2,st,dr,lg,rez,p[17],rmq[20][100001];
int main()
{
fin>>n>>q;
for(i=1; i<=n; i++)
fin>>rmq[0][i];
for(expp=1,p2=2; p2<=n; expp++,p2*=2)
{
p[expp]=p2;
for(i=1; i<=n; i++)
rmq[expp][i]=min(rmq[expp-1][i],rmq[expp-1][i+p2/2]);
}
for(i=1; i<=q; i++)
{
fin>>st>>dr;
lg=dr-st+1;
expp=log2(lg);
rez=min(rmq[expp][st],rmq[expp][dr-p[expp]+1]);
fout<<rez<<'\n';
}
return 0;
}