Pagini recente » Romanii medaliati la IOI | Cod sursa (job #1570104) | Cod sursa (job #2547679) | Cod sursa (job #1468934) | Cod sursa (job #3000213)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,rmq[20][200011],expo2,i,p2,ind,x,y,lg,a;
int main()
{
fin >> n >> m;
for (i=1;i<=n;i++)
{
fin >> rmq[0][i];
}
for (expo2=1,p2=2;p2<=n;expo2++,p2*=2)
{
for (ind=1;ind<=n-p2+1;ind++)
{
rmq[expo2][ind]=min(rmq[expo2-1][ind],rmq[expo2-1][ind+(p2/2)]);
}
}
for (i=1;i<=m;i++)
{
fin >> x >> y;
lg=y-x+1;
a=log2(lg);
fout << min(rmq[a][x],rmq[a][y-(1<<a)+1]) << '\n';
}
return 0;
}